findやgrepの出力結果を使用して特定文字以降を削除したくなる場合がありますよね!?
以下にawkをつかった使用例を記します。
awkのsubを使って実現します。
記述は正規表現で書くことができます。
実際に特定文字を指定した実行例を記します。
sakura@stream:~$ echo foo/bar/hoge | awk '{ sub("bar.*$",""); print $0; }' foo/
sakura@stream:~$ echo foo/bar/hoge123 | awk '{ sub("hoge.*$",""); print $0; }' foo/bar/
sakura@stream:~$ echo foo/bar/hoge123 | awk '{ sub("hoge.*$","#"); print $0; }' foo/bar/#
上記の結果より、以下の構文で実現することができます。
awk '{ sub("特定文字列.*$", ""); print $0;
特定文字列.*$の.*$は特定文字列から最後まで文字列を示しています。
尚、番外になりますが、subを使えば置換することもできます。
sakura@stream:~$ echo foo/bar/hoge | awk '{ sub("bar","BAR"); print $0; }' foo/BAR/hoge
sakura@stream:~$ echo foo/bar/hoge | tr bar BAR foo/BAR/hoge
以上、awkのsubを使って特定文字列(指定文字列)以降の文字列を削除する方法でした。