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?
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?
Der Sed-Weg,
sed -e ':a; N; $!ba; s/\n/,/g'
# :a # label called 'a'
# N # append next line into Pattern Space (see info sed)
# $!ba # if it's the last line ($) do not (!) jump to (b) label :a (a) - break loop
# s/\n/,/g # any substitution you want
Hinweis :
Dies ist linear in der Komplexität, da nur einmal substituiert wird, nachdem alle Zeilen in den Pattern Space von sed eingefügt wurden.
@AnandRajaseka's Antwort und einige andere ähnliche Antworten, wie zum Beispiel hier sind O(n²), da sed jedes Mal, wenn eine neue Zeile an den Pattern Space angehängt wird, eine Ersetzung vornehmen muss.
Zum Vergleich,
seq 1 100000 | sed ':a; N; $!ba; s/\n/,/g' | head -c 80
# linear, in less than 0.1s
seq 1 100000 | sed ':a; /$/N; s/\n/,/; ta' | head -c 80
# quadratic, hung
sed -e :a -e '/$/N; s/\n/\\n/; ta' [filename]
Erläuterung:
-e
- bezeichnet einen auszuführenden Befehl
:a
- ist ein Etikett
/$/N
- definiert den Umfang der Übereinstimmung für die aktuelle und die (N)ext-Linie
s/\n/\\n/;
- Ersetzt alle EOL durch \n
ta;
- bei erfolgreicher Übereinstimmung zu Etikett a gehen
Entnommen aus mein Blog .
Es sieht so aus, als gäbe es die Antworten bereits.
Wenn Sie wollen a, b, c
Format, verwenden Sie ls -m
( Tulains Córdovas Antwort )
Oder wenn Sie wollen a b c
Format, verwenden Sie ls | xargs
(vereinfachte Version von Antwort von Chris J. )
Oder wenn Sie ein anderes Begrenzungszeichen wie |
verwenden ls | paste -sd'|'
(Anwendung von Artem's Antwort )
Wenn Ihre Version von xargs das Flag -d unterstützt, sollte dies funktionieren
ls | xargs -d, -L 1 echo
-d ist das Trennzeichen-Flag
Wenn Sie nicht über -d verfügen, können Sie Folgendes versuchen
ls | xargs -I {} echo {}, | xargs echo
Mit dem ersten xargs können Sie Ihr Trennzeichen angeben, das in diesem Beispiel ein Komma ist.
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.