その特定の行の改行を削除しながら、行全体を置き換えます。

その特定の行の改行を削除しながら、行全体を置き換えます。

sed特定の単語を含む行全体を置き換えようとしています。そして最後に改行文字があります。テストファイルは次のとおりです。

this # target for substitution
this is a test
another test?

今私に解放するここからそしてここから接続済みPost、どういうわけかこれを行う方法を理解します。

sed 's/^this$/test/g' testfile

これは効果があるか、少なくともそうです。なぜなら単語の末尾の改行文字thisはそのまま残ります。

test # target for substitution but newline is still there
this is a test
another test?

上記の内容を見ると、知っている sed改行文字を直接一致させる方法はありません(一部のバージョンでは「\ n」を使用できることを覚えていますが、sedこれは要点ではありません)。

私は少なくとも全体の単語/行と改行文字を削除する方法を知っています。

sed '/^this$/d' testfile

しかし、代わりに使用する必要があります。

どうすればいいですか? (sed最大)

ベストアンサー1

thistest私が理解しているところによると、単語と改行文字だけで構成される行を変更したいので

foo
this
this is a test

しなければならない

foo
testthis is a test

sed次の行に参加し、N改行文字の前のすべての内容を変更するだけです。

sed '/^this$/{N;s/.*\n/test/;}'

おすすめ記事