Jak ls -l
zmodyfikować dane wyjściowe w celu oddzielenia pól za pomocą tabulatorów zamiast spacji? Chcę wkleić dane wyjściowe do arkusza kalkulacyjnego; wypełnienie ze zmienną liczbą spacji utrudnia to. Ilustrować:
drwxr-xr-x 2 root root 4096 26 września 11:43 wpa_supplicant -rw-r ----- 1 root dialout 66 września 26 11:43 wvdial.conf drwxr-xr-x 9 root root 4096 8 października 08:21 X11 drwxr-xr-x 12 root root 4096 18 lutego 23:31 xdg drwxr-xr-x 2 root root 4096 31 stycznia 06:11 xml drwxr-xr-x 2 root root 4096 22 listopada 07:26 xul-ext -rw-r - r-- 1 root root 349 13 stycznia 2012 zsh_command_not_found
We fragmencie z ls -l /etc
powyższego wiersze 1, 2 i 3 mają jedną cyfrę w kolumnie 2, podczas gdy wiersz 4 ma dwie. Oznacza to, że wyrównanie uzyskuje się za pomocą dwóch spacji do oddzielenia kolumn 1 i 2 w rzędach 1-3, ale tylko jednej spacji w rzędzie 4.
ls
mówi , parsowanie jego wyników jest w porządku. To rzadko jest celem. Prawdopodobnie jest tutaj. Myślę, że zastosowana metoda jest całkiem dobra (każda metoda przyniesie niepożądane rezultaty, biorąc pod uwagę pewien zestaw potrzeb)! Jednak prawdopodobnie parsowaniels
może być lepsze. Rozważ przypadek nazwy pliku, która faktycznie zawiera znak tabulacji.ls -l
zastępuje kartę?
znakiem. Skrypt zachowuje znak tabulacji, który utworzy dodatkowe kolumny, jeśli jego wynik zostanie zinterpretowany jako rozdzielany tabulatorami i użyty do utworzenia arkusza kalkulacyjnego. Psunie się, jeśli nazwa pliku ma nowy wiersz.