2012-07-28 23 views
8

それに続く行とそれに続く4行をコメントするにはsedを使うと助けが必要です。テキストファイルの 。sed - 一致する行とそれに続くx行のコメント

私のテキストファイルは、このようなものです:

[myprocess-a] 
property1=1 
property2=2 
property3=3 
property4=4 

[anotherprocess-b] 
property1=gffgg 
property3=gjdl 
property2=red 
property4=djfjf 

[myprocess-b] 
property1=1 
property4=4 
property2=2 
property3=3 

私はそれを 期待される出力を次のテキスト '[myprocess' と4線​​を有するすべての行に#を接頭辞にしたい:

#[myprocess-a] 
#property1=1 
#property2=2 
#property3=3 
#property4=4 

[anotherprocess-b] 
property1=gffgg 
property3=gjdl 
property2=red 
property4=djfjf 

#[myprocess-b] 
#property1=1 
#property4=4 
#property2=2 
#property3=3 

これについてあなたの助けに感謝します。

答えて

13

あなたはラインのセットに正規表現を適用することにより、これを行うことができます。

sed -e '/myprocess/,+4 s/^/#/' 

これは「myprocess」とそれらの後に4行と行と一致しました。これらの4行の場合、行の先頭に '#'が挿入されます。

は(私は、これはGNUの拡張かもしれないと思う - それは私が知っている「sedの1つのライナー」チートシートのいずれかではありません)文字列の連結と awkデフォルトのアクションを使用して

+0

'sedの:-e式#1、CHAR 12:参照の予期しない ''' :-( – Mausy5043

+0

どのバージョン?gnu拡張子を持っているかどうかは不明です。 – Flexo

+0

sed 4.2.2。Debianのデフォルトですので、おそらくGNU拡張子がありません – Mausy5043

2
sed '/\[myprocess/ { N;N;N;N; s/^/#/gm }' input_file 
関連する問題