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:
-
cutmit-dund-fcut -d ' ' -f 1,2,3,4,9von
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 specifiedSpeziell für
lsdies wird wahrscheinlich fehlschlagen, dalsändert die Menge an Leerzeichen zwischen aufeinanderfolgenden Feldern, damit sie besser ausgerichtet werden.cutbehandeltfoo<space>barundfoo<space><space>baranders. -
awkund 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]"'