
Ich bin ein Neuling im Shell-Scripting, daher ist dies vielleicht eine sehr einfache Lösung, aber ich habe Mühe, sie zum Laufen zu bringen. Ich habe eine Datei mit folgendem Inhalt:
example1.eu
example2.eu
example3.eu
Ich versuche, den Inhalt einer Datei in einer einzeiligen Formatierung wie folgt auszugeben.
test.beispiel1.eu,test.beispiel2.eu,test.beispiel3.eu
und so weiter.
Ich habe dies in meinem Skript, kann aber nicht herausfinden, wie ich „Test“ als ersten Eintrag in der Datei anhängen kann.
cat file | xargs | sed -e 's/ /,test./g'
beispiel1.eu,test.beispiel2.eu,test.beispiel3.eu
Bitte um Rat. Danke
Antwort1
Sie können „Einfügen“ verwenden, um ein Trennzeichen festzulegen. Beispiel:
cat file | sed -e 's/^/test./' | paste -sd ','
Bearbeiten: Verbesserte Version (Kommentar von tripleee)
sed file -e 's/^/test./' | paste -sd ','
Antwort2
Dies kann mit dem folgenden Befehl erfolgen awk
:
$ awk '{a=a"test."$0","}END{sub(/,$/,"",a);print a}' file
test.example1.eu,test.example2.eu,test.example3.eu
Dadurch wird eine Zeichenfolgenvariable erstellt a
und jede Zeile und ein Komma an die Zeichenfolge angehängt. Anschließend wird das letzte Komma durch nichts ersetzt und die Zeichenfolge gedruckt.
Vorherige Antwort mit abschließendem Komma:
$ awk 'BEGIN{ORS=","}{print "test."$0}' file
test.example1.eu,test.example2.eu,test.example3.eu,
Dadurch wird das Trennzeichen für Ausgabedatensätze auf ein Komma gesetzt und anschließend jede Zeile mit test.
einem vor der Zeichenfolge stehenden Zeichen gedruckt.