2016-05-24 23 views
1

sedを使用してファイルの先頭に行を挿入しようとしています。 私はコマンドを以下試してみました:HP-UXでsedを使用してファイルの先頭に行を挿入する

sed -i '1s/^/LINE TO INSERT\n/' test.txt sed: illegal option -- i - >エラーが

sed '1i/^/LINE TO INSERT\n/' test.txt sed: Function 1i/^/LINE TO INSERT\n/ cannot be parsed.を投げ - >エラーが

を投げ方法の両方が失敗したことが出てきました。 可能な解決策はありますか? HP-UXでkshスクリプトを使用しています。

ありがとうございました。

+1

は、なぜあなたは 'エコー> tmp_fileを「LINE挿入する」はありません.txt'それから 'cat test.txt >> tmp_file.txt'そして最後に' mv tmp_file.txt test.txt'? – fedorqui

答えて

2

あなたは誤植があると思います。第1のコマンドの最後のアポストロフィがありません。それ以外の場合は問題ありません。すなわち:

あなたは、この持っている:sed -i '1s/^/... test.txt

をしかし、あなたはこの必要があります:すべて一緒に置くsed -i '1s/^/...' test.txt

を:sed -i '1s/^/LINE TO INSERT\n/' test.txt

更新を:-iがサポートされていない場合、その後、あなたが使用することができます一時ファイル:

sed '1s/^/LINE TO INSERT\n/' test.txt > /tmp/test.txt.tmp 
mv /tmp/test.txt.tmp test.txt 
+1

このシステムの 'sed'のバージョンは' -i'をサポートする可能性は非常に低いので、これは役に立ちません。 –

+0

さて、最後の1つが機能しましたが、行の後ろに「n」が追加されています。それを避ける方法は?ありがとう – Ritesh

+1

私は異なる環境を持っているので、私は示唆を与えることができます。このページによれば:http://www.tek-tips.com/viewthread.cfm?qid=1184966 sedコマンドで '\ n'を'^M 'に置き換えることができます: 'sed' 1s/^/LINE TO INSERT^M/'... ' –

3

おはようございますed

printf '%s\n' 1i 'LINE TO INSERT' . w | ed -s file 

printf別々の行にedに各コマンドを送信するために使用されます。あなたは私のようなedを恐れている場合

あるいは、あなただけのコメントで提案されているように、一時ファイルを使用することができます。

echo 'LINE TO INSERT' > tmp && cat tmp test > new && mv new test && rm tmp 
関連する問題