14

sed を使用して、一致する行とそれに続く 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

テキスト '[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

これについてご協力いただきありがとうございます。

4

3 に答える 3

22

これを行うには、一連の行に正規表現を適用します。

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

これは、「myprocess」のある行とその 4 行後と一致します。これらの 4 行では、行頭に「#」が挿入されます。

(これは GNU 拡張機能である可能性があると思います。私が知っている「sed one liner」チートシートには含まれていません)

于 2012-07-28T19:32:04.400 に答える
3
sed '/\[myprocess/ { N;N;N;N; s/^/#/gm }' input_file
于 2012-07-28T19:37:14.543 に答える
2

で文字列の連結とデフォルトのアクションを使用しますawk
http://www.gnu.org/software/gawk/manual/html_node/Concatenation.html

awk '/myprocess/{f=1} f>5{f=0} f{f++; $0="#" $0} 1'  foo.txt

または、ブロックが常に空の行で終了する場合

awk '/myprocess/{f=1} !NF{f=0} f{$0="#" $0} 1'  foo.txt
于 2012-07-28T22:17:55.047 に答える