580 Stimmen

Wie lassen sich mehrere Zeilen mit Dateinamen zu einer Zeile mit benutzerdefiniertem Trennzeichen zusammenfügen?

Ich möchte mich dem Ergebnis von ls -1 in eine Zeile einfügen und sie mit einem beliebigen Zeichen abgrenzen.

Gibt es irgendwelche Standard-Linux-Befehle, mit denen ich dies erreichen kann?

0voto

Celogeek San Punkte 109

Schnelle Perl-Version mit Behandlung von abschließenden Schrägstrichen:

ls -1 | perl -E 'say join ", ", map {chomp; $_} <>'

Zur Erklärung:

  • perl -E: Perl ausführen mit Unterstützung von Funktionen (z.B. ...)
  • say: Druck mit Carrier Return
  • join ", ", ARRAY_HERE: ein Array mit ", " verbinden
  • map {chomp; $_} ROWS: aus jeder Zeile den Carrier Return entfernen und das Ergebnis zurückgeben
  • <>: stdin, jede Zeile ist eine ZEILE, durch Kopplung mit einer Karte wird ein Array für jede ZEILE erstellt

-1voto

Suman Punkte 446

Sie können chomp verwenden, um mehrere Zeilen in einer einzigen Zeile zusammenzufassen:

perl -e 'while (<>) { if (/\$/ ) { chomp; } print ;}' bad0 >test

Zeilenumbruchbedingung in die if-Anweisung einfügen; es kann ein Sonderzeichen oder ein beliebiges Trennzeichen sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X