読者です 読者をやめる 読者になる 読者になる

drag n drop

調べたことを書きます

1行ごとに文字列で分割して、列を指定して出力

cutは、1文字で分割して、列を1つ指定して出力できる

awkは、空白で分割して、列を複数指定して出力できる

文字列で分割する場合は、sedが使えそうだが、正規表現が複雑になりそう

そこで、rubyワンライナーで使ってみることにする

 

行ごとに処理させるには、ruby -ne <スクリプト文字列>で実行する

このとき、$_ に、1行ごとの値が入る

 

やり方:

cat  <in_file>  | ruby -ne 'puts $_.split(" <文字列> ")[ <列> ]'  >  <out_file>

 

例:

cat foo.txt | ruby -ne 'puts $_.split("///")[2]' > bar.txt

 

追記 (2015/05/05)

awkで、空白以外で分割することも出来た

cat foo.txt | awk -F'///' '{print $3}' > bar.txt

 

参考:

Rubyによるワンライナーのまとめ - ぬいぐるみライフ(仮)

split (String) - Rubyリファレンス

Array - Rubyリファレンス

http://ref.xaio.jp/ruby/classes/kernel/puts