Ich verwende gerne den cut
Befehl unter Linux mit dem -c
Flagge. Ich bin jedoch daran interessiert, einen Befehl zu finden, der die umgekehrte Menge von cut
ausführt . Im Wesentlichen angesichts der Eingabe:
drwxrwxrwx 2 root root 4096 4096 4 20:15 bin
drwxrwxrwx 2 root root 4096 4096 4 20:15 Desktop
Ich möchte alles außer sehen „4096 4 20:15“. Hier ist die Ausgabe:
drwxrwxrwx 2 root root bin
drwxrwxrwx 2 root root Desktop
Ich möchte in der Lage sein, buchstäblich zwischen den Zeichen x und y auszuschneiden, wenn das Sinn macht.
Irgendwelche Ideen? Ich kann mir nicht vorstellen, dass es ein schwer zu schreibendes Skript wäre, aber wenn es bereits einen Befehl dafür gibt, würde ich ihn gerne verwenden.
Akzeptierte Antwort:
Wie andere bereits betont haben, sollten Sie die Ausgabe von ls
nicht parsen . Angenommen, Sie verwenden ls
nur als Beispiel und werden etwas anderes parsen, gibt es ein paar Möglichkeiten, das zu tun, was Sie wollen:
-
cut
mit-d
und-f
cut -d ' ' -f 1,2,3,4,9
von
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 specified
Speziell für
ls
dies wird wahrscheinlich fehlschlagen, dals
ändert die Menge an Leerzeichen zwischen aufeinanderfolgenden Feldern, damit sie besser ausgerichtet werden.cut
behandeltfoo<space>bar
undfoo<space><space>bar
anders. -
awk
und seine Varianten teilen jede Eingabezeile in Felder auf Leerraum auf, sodass Sie anweisen können, nur die gewünschten Felder zu drucken:awk '{print $1,$2,$3,$4,$9}'
-
Perl
perl -lane 'print "@F[0 .. 3,8]"'