2016-11-04 4 views
1

Ich kann nicht meinen Kopf um sed wickeln. Ich muss es verwenden, um den Text "Sie haben n Dateien" in eine vorhandene Datei einzufügen. Ich weiß, dass ls | wc -l bekommt mich n, aber aus irgendeinem Grund kann ich nicht finden, die richtige Syntax, um sed, um das Einfügen in eine vorhandene Datei unterhalb der ersten Zeile. HierEinfügen von Text + piped Befehle in Datei mit sed

ist, was ich mit so weit kommen -

echo "File log for" `date` > filelog | sed -i '1s/You currently have `n` files /' filelog 

Mein Hauptproblem (hoffe ich) wird sed immer die ls | wc -l zusammen mit dem Text als eine einzige Zeile zu erkennen.

+0

unklar zu arbeiten, was Sie fragen ... von dem, was ich verstehe, können Sie zwei Befehle benötigen, so ändern '|' auf ';' oder verwenden Sie die zwei Befehle separat .... um etwas nach einer bestimmten Zeile hinzuzufügen, verwenden Sie den 'a' Befehl nicht ersetzen .. für zB: auf GNU sed,' 'sed -i '1aSie haben zur Zeit' n' Dateien' Dateilog''. Keine Ahnung was du meinst von n umgeben von Backtick – Sundeep

+0

Sorry wegen der Verwirrung. Ich gebe "n" in Backticks nur als Platzhalter für eine Zahl (think algebra). Ich bekomme die Nummer von der ls | wc -l Befehl. –

Antwort

1

kann mit dem printf und command substitution

printf "File log for $(date)\nYou currently have $(ls | wc -l) files\n" > filelog 


Hinweis erfolgen:Avoid parsing ls

Zum Beispiel versuchen, eine Datei mit touch $'\n'as zugab und zählen. obwohl in diesem Fall können wir -q Option verwenden, um diese

printf "File log for $(date)\nYou currently have $(ls -q | wc -l) files\n" > filelog 
+1

Ich habe endlich auf sed verzichtet und bin mit etwas sehr ähnlichem gegangen. Ich markiere dies als die Antwort vor allem, weil es weniger komplex ist als andere Beispiele, ohne jegliche Funktionalität zu verlieren. –

1

Diese miight für sie arbeiten (GNU SED):

sed -i -e '1e echo File log for $(date)' -e '1e echo You currently have $(ls|wc -l) files' file 

Verwenden des e Befehl, um die Shell-Befehle an der gewünschten Adresse zu bewerten.

Verwandte Themen