perlワンライナー

perl ワンライナー

大きなファイルが存在する。この大きなファイルの中の特定の文字列を置き換えたい。
perl ワンライナーの出番。

1
$ perl -pe 's/xxx/X01/g;s/yyy/X02/g' in_file > out_file

これでxxxはX01に、yyyはX02に置換される。
本当は、こんな単純な条件で置換してしまうと、余計なところまで置換されそうなので、もう少し悩む必要がある。

ちなみに、perlのオプションの-eが直後のコマンドを実行するということ。-pはファイルを読み込んで出力すること。

ここまで簡単な編集なら、awkでもできる。

1
$ awk '{gsub("xxx", "X01");gsub("yyy", "X02");print}' in_file | tee out_file

gsubが文字列置換。検索対象文字列には正規表現が利用できる。
subという関数もあるが、こちらは最初のマッチのみを置換する。
gsubは3つ目の引数に置換対象の文字列をしていできるが、省略すると$0が入る。
printも引数を省略すると$0が入るので、行ごとに処理し、置換が終わったら出力される。

teeは標準入力をファイルに出力するコマンド。 > out_fileでも良いとは思うが、一応コマンドを使っておく。

同じタグの記事
同じカテゴリの記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA