回答:
awk 'NR==1{print; print "new line"} NR!=1'
あなたの特定のケースでは、これはもっとシンプルなはずです:
sed '1 { P ; x }' your-file
説明:行1で、以下を実行します
次に、行(今は空)がサイクルの一部として再び印刷されます。
改行文字の代わりに改行を追加したい場合(最初に理解したこと)、単にコマンドを使用します(追加):sed
a\
sed '1 a\
appended line' your-file
あるいは
sed '1 aappended line' your-file
appended line
行1の後に「」を追加します。
sed -i '1 a\\' file
単なる改行です。
'1 aapended line'
例として、それがGNUismであることです。
sed ':a;N;$!ba;s/\n/\n\n\n/' yourBigFile
私は通常ed
これに使用します:
(echo 1a; echo 'Line to insert'; echo .; echo w) | ed - filename
sed
ソリューションに似ていますが、エスケープされた改行の乱雑さはありません。
echo
特に以下の場合は、いくつかを省くことができbash
ますed - filename <<< $'1a\nLine to insert\n.\nw'
。
dash
多くのシステムでは/bin/sh
です。
echo
のものをspareしまない」と書いた理由です。スペアリングのすべて echo
のは確かにあるbash
唯一の機能が、減少echo
に4〜1作品からのカウントをdash
し、ksh
あまりにも:echo '1a\nLine to insert\n.\nw' | ed - filename
。
printf %s\\n
。これは、指定するすべての引数の後に改行を挿入し、挿入する行に埋め込まれた特殊文字を台無しにしません。また、利用可能なed
場合に使用するのex
はなぜですか?
私はこれにPythonを使用します
import fileinput
for linenum,line in enumerate(fileinput,FileInput("file",inplace=1)):
if linenum ==1:
print ""
print line.rstrip()
else:
print line.rstrip()`
上記の回答では、元のファイルへの変更を保存する方法について言及していません。これは、OPが求めていたものだと思います。
それは私がページにカムするときに私が必要としたことは確かです。
だからあなたのファイルが呼び出されると仮定 output.txt
sed -i '1 a This is the second line' output.txt
私の特定のユースケースは、xslスタイルシート宣言をjunit xmlファイルに自動的に追加することです。
sed -i '1 a <?xml-stylesheet type="text/xsl" href="junit-html.xsl"?>' junit.xml
awk 'NR==2 {print "new line"} 1'