Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

sedで複数行にまたぐ処理をしたい時、パターンマッチ併用でやや複雑な事ができる。

shuzo-kino.hateblo.jp
の発展です。

実際のところ

こんなファイルがあったとします。

$ cat sample.txt 
This is my dog,
 whose name is Frank.
This is my fish,
whose name is George.
This is my goat,
 whose name is Adam.

ここで、dogが含まれる行だけ改行を削除するルールを適用する場合、以下のようにします。

$ cat sample.txt | sed -e "N;/dog/s/\n//g" 
This is my dog, whose name is Frank.
This is my fish,
whose name is George.
This is my goat,
 whose name is Adam.

基本的には冒頭と同じでよいが、fishは文頭にもってこないといけないと祖先から言い伝えられてきた家庭に生まれた方むけ

$ cat sample.txt | gsed -e "N; s/\n//g; /fish/s/fish/\\nfish/g" 
This is my dog, whose name is Frank.
This is my 
fish,whose name is George.
This is my goat, whose name is Adam.