2012-02-24 4 views
1

私はパターンのパターンを渡すと、大手#文字を削除したい私はBASHスクリプトを使用して、パターンに基づいて行を変更する方法は?

##PAT1## 
#xxxdx 
#ddddvdvc 
##PAT2## 
#dsfcdsfd 
#dsfwf 

を処理するために必要なファイルを持っています。だから私が渡した場合##PAT1##私は次の2行(次のパターンまで)から#を削除したい - パターンの後に常に2行。私はsedで成功しなかった。 sedのGNUバージョンを使用して

+0

をあなたが期待する出力を表示するために、上記のあなたのメッセージを編集してください。がんばろう。 – shellter

答えて

2

一つの方法

ありがとう:infile

内容:

"##PAT1##" 
"#xxxdx" 
"#ddddvdvc" 
"##PAT2##" 
"#dsfcdsfd" 
"#dsfwf" 

コマンド:

sed '/^"##PAT1##"/,+2 s/^\("\)#\([^#]\)/\1\2/' infile 

出力:

"##PAT1##" 
"xxxdx" 
"ddddvdvc" 
"##PAT2##" 
"#dsfcdsfd" 
"#dsfwf" 
1

これはあなたのために働くかもしれない:

sed '/^"##PAT1##/{$!N;$!N;s/#//5g}' file 
"##PAT1##" 
"xxxdx" 
"ddddvdvc" 
"##PAT2##" 
"#dsfcdsfd" 
"#dsfwf 
+0

「$!N」は何をしていますか? – Pascal

+0

@tuner '$!N'は、現在の行がファイルの最後の行でない場合、改行とパターンスペースの次の行を追加することを意味します。 – potong

関連する問題