Rád používám cut příkaz v Linuxu pomocí -c vlajka. Zajímá mě však nalezení příkazu, který dělá sadu inverzní k cut . V podstatě, vzhledem k zadání:
drwxrwxrwx 2 root root 4096 4096 4 20:15 bin
drwxrwxrwx 2 root root 4096 4096 4 20:15 Desktop
Chci vidět všechno kromě „4096 4 20:15“. Zde je výstup:
drwxrwxrwx 2 root root bin
drwxrwxrwx 2 root root Desktop
Chci být schopen doslova stříhat mezi znaky x a y, pokud to dává smysl.
Nějaké nápady? Nedokážu si představit, že by bylo těžké napsat skript, ale pokud pro něj již existuje příkaz, rád bych ho použil.
Přijatá odpověď:
Jak poukázali jiní, neměli byste analyzovat výstup ls . Za předpokladu, že používáte ls pouze jako příklad a bude analyzovat něco jiného, existuje několik způsobů, jak dělat to, co chcete:
-
cuts-da-fcut -d ' ' -f 1,2,3,4,9z
man cut:-d, --delimiter=DELIM use DELIM instead of TAB for field delimiter -f, --fields=LIST select only these fields; also print any line that contains no delimiter character, unless the -s option is specifiedKonkrétně pro
lstoto pravděpodobně selže, protoželszmění množství mezer mezi po sobě jdoucími poli, aby se lépe zarovnaly.cutzachází sfoo<space>barafoo<space><space>barjinak. -
awka jeho varianty rozdělují každý vstupní řádek na pole na prázdném místě, takže mu můžete říct, aby tiskl pouze pole, která chcete:awk '{print $1,$2,$3,$4,$9}' -
Perl
perl -lane 'print "@F[0 .. 3,8]"'