2012-09-21 28 views
10

プログラムの "sed"を使用して、ファイルの最初の行で文字列を置き換えることはできますか?sed最初の行の文字列を置き換えます

コマンドs/test/blah/11s/test/blah/は機能していないようです。別の方法がありますか?

+1

何 '1S /テスト/何とか程度/' "動作しませんか"? –

答えて

2

これはそれを行うだろう。

sed -i '1s/^.*$/Newline/' textfile.txt 

ちょうどマッチが一つだけの行に一意であることを確認することを失敗:

sed -i 's/this is line one and its unique/Changed line one to this string/' filename.txt 

-iオプションは、ファイルに変更を書き込みだけではなく表示しますstdoutへの出力。

EDIT:

共通の文字列は次のようになり照合することによって、全体のラインを交換するには:

^は、行の先頭に一致する $が行の末尾にマッチして .*はすべてを一致する
sed -i 's/^.*COMMONSTRING$/Newline/' 

upto COMMONSTRING

+0

行は毎回異なる共通文字列で終わりますが、これを解決する方法を教えてくれました。ありがとう! ;) – irek

20

これはあなたのために役立つかもしれません(GNU sed):

sed -i '1!b;s/test/blah/' file 

は、最初の行の最初のtestblahに置き換えます。

それとも、ただ変更最初の行にしたい場合:

sed -i '1c\replacement' file 
+0

オールドスクールの回答。好き。 Upvote! – lzap

+1

ところで、 "!b;" - それはなんのためですか? – lzap

+4

@lzap "1!b" = '' 1''に ''ならば 'b''でスクリプトの終わりに移動する –

関連する問題