sedで最後に条件にマッチしたパターンのみ処理する
Pocket

sedで最後に条件にマッチしたパターンのみ置換をする場合、sed単体で実現するのはちょっと難しい。
じゃあどうすればよいのかというと、一度tacで反転させて、最初にマッチした行のみ処理を行ったのち、再度反転させてやるのが楽だ。

Sponsored Links

tac | sed '1,/パターン/ 処理内容' | tac

20160709_192504000000

blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test5.txt
     1  aaaaa123-111
     2  bbbbb123-222
     3  ccccc123-111
     4  ddddd123-222
     5  eeeee123-111
     6  fffff123-222
     7  ggggg123-111
     8  hhhhh123-222
     9  iiiii123-111
    10  jjjjj123-222
    11  kkkkk123-111
    12  lllll123-222
    13  mmmmm123-111
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test5.txt | tac | sed '1,/222/ s/222/000/g' | tac
     1  aaaaa123-111
     2  bbbbb123-222
     3  ccccc123-111
     4  ddddd123-222
     5  eeeee123-111
     6  fffff123-222
     7  ggggg123-111
     8  hhhhh123-222
     9  iiiii123-111
    10  jjjjj123-222
    11  kkkkk123-111
    12  lllll123-000
    13  mmmmm123-111
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test5.txt | tac | sed -n '1,/kkkkk/ p' | tac
    11  kkkkk123-111
    12  lllll123-222
    13  mmmmm123-111
Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。