2017-04-11 9 views
1

abc.cの2行目にコメントし、ファイルの3行目にNew second lineというテキストを追加します。行をコメントし、その下に別の行を挿入するにはどうすればいいですか?

abc.c

First line 
Second line 
Third line 

マイ修正されたファイルは、私は、コマンド

sed 's/Second line/\/\/Second line\ 
New second line/g' abc.c > tmp.c && mv tmp.c abc.c 

を使用してみましたが

First line 
//Second line 
New second line 
Third line 

のようになります。しかし、それは "文字化けsedコマンド" などのエラーを与えますon sunOS 5.10

誰でも正しいコマンドを教えてください。

答えて

0

試してみてください。ファイルの

sed "s/Second line/\/\/&\\ 
New second line/g" abc.c > tmp.c && mv tmp.c abc.c 
+0

こんにちは@Kripalini。これはあなたのために機能しましたか? – Nick

0

sed -i.bak -e"s/Second line/\/\/&\nNew second line/;" abc.c

その後内容:

First line 
//Second line 
New second line 
Third line 
+0

'p'を実行すると、ファイル内のすべての行も複製され、 '-n'で抑制する必要があります。ポイントは何ですか? '\ n'はすべてのプラットフォーム(例えばmacOS)では動作しませんが、埋め込みリテラル改行では機能しません。 {}は不要です。 – Nick

+0

あなたの答えを私のマシンで使用することはできませんでした(WindowsではGNU sedバージョン4.2.1)。おそらく私は組み込み改行の使い方を知らないからでしょう。私はあなたの説明に基づいて、そのことを学んでいただければ幸いです。私のバージョンは私のマシンで動作する1つのライナーです。だから私は私のために働くものを代替的な答えとして提供すると思った。私は '-n'の使用を認め、' p'は非効率的に冗長です。私は答えを編集します。それを指摘してくれてありがとう。 – Yunnosch

+0

私はOPの埋め込み改行の理解に同じ問題があるかもしれないと思います。あなたはそれを説明すれば、あなたはおそらく多くのアップフォース(少なくともOPによる受諾と私によるupvote)に設定されています。 – Yunnosch

関連する問題