差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

memo:awk [2015/03/03 05:42]
hasegawa [レコード番号NRを使った範囲指定]
memo:awk [2016/07/17 04:22]
ライン 1: ライン 1:
-====== awk ====== 
-2012/11/07 
-1行1レコード形式のデータ,特に大きなデータを取り扱うのに便利なのだということを某MLで知る. 
- 
-今扱っている固定長データ(大きいのでも600MBくらいだけど)から分析に使うフィールドを切り出すのに便利そうだ. 
- 
-※改行コードはLFを前提としていることに注意(2012/​11/​27追記) 
- 
-網羅的なガイドは以下 
-http://​www.kt.rim.or.jp/​~kbk/​gawk-30/​gawk_toc.html 
- 
-こちらの方が取っつきやすいかも 
-http://​antibayesian.hateblo.jp/​entry/​2014/​09/​15/​162605 
- 
-===== フィールドの指定方法 ===== 
- 
-awk.txtの全レコードに対して,2番目のフィールドを(標準)出力するには 
-<code awk> 
-awk '{ print $2 }' awk.txt 
-</​code>​ 
- 
-awk.txtの全レコードに対して,10番目と3番目のフィールドを(標準)出力するには 
- 
-<code awk> 
-awk '{ print $10 $3 }' awk.txt 
-</​code>​ 
- 
-これだと連結されるので,間にブランクを入れる 
-<code awk> 
-awk '{ print $10 " " $3 }' awk.txt 
-</​code>​ 
- 
-詳しい解説は以下 
- 
-http://​www.ibm.com/​developerworks/​jp/​linux/​library/​l-awk1/​ 
-http://​shellscript.sunone.me/​awk.html 
- 
-2012/11/22 追記 
- 
-===== パターンによるレコード範囲指定 ===== 
- 
-==== レコード番号NRを使った範囲指定 ==== 
-組み込み変数のNRはレコード番号を指定する.ただし,NRとNFは変数とはいっても通常,値は代入はせず読み取り専用で用いる 
- 
-awk.txtのレコード番号3(3行目)の,2番目のフィールドを(標準)出力するには 
-<code awk> 
-awk 'NR == 3 { print $2 }' awk.txt 
-</​code>​ 
-awk.txtのレコード番号が5未満(1~4)の,1番目のフィールドを(標準)出力するには 
-<code awk> 
-awk 'NR < 5 { print $1 }' awk.txt 
-</​code>​ 
- 
-awk.txtのレコード番号が5未満(1~4)またはレコード番号が7の,全てのフィールドをout.txtに出力するには 
-<code awk> 
-awk 'NR < 5 || NR == 7 { print }' awk.txt > out.txt 
-</​code>​ 
-※これは一行目がラベルになっているデータを分割する際に有用 
-===== フィールド区切り文字の指定 ===== 
--Fオプションにより,フィールドの区切り文字を指定することが出来る. 
- 
-awk.txtの区切り文字をスペースに指定して,全レコードに対して,2番目のフィールドを(標準)出力するには 
-<code awk> 
-awk -F" " '{ print $2 }' awk.txt 
-</​code>​ 
-awk.csvの区切り文字をカンマに指定して,全レコードに対して,2番目のフィールドを(標準)出力するには 
-<code awk> 
-awk -F","​ '{ print $2 }' awk.csv 
-</​code>​ 
- 
-===== ファイルへの出力 ===== 
-awk.txtのレコード番号が5未満(1~4)の,1番目と2番目のフィールドをカンマで区切ってoutput.csvに出力するには 
-<code awk> 
-awk 'NR < 5 { print $1 ","​ $2 }' awk.txt > output.csv 
-</​code>​ 
-出力されたoutput.csvの中身 
-  1,B1 
-  2,B2 
-  3,B3 
-  4,B4 
- 
-===== 固定長レコードの読込 ===== 
-参考:http://​www.geocities.jp/​cygnus_odile/​awkpage/​14_awk_fixed_length.html 
- 
-組み込み変数のFIELDWIDTHSを使って固定長レコードの各フィールド幅を指定可能(らしいが,上手くいかない) 
- 
- 
- 
-===== このページで使っているデータ ===== 
- 
-awk.txt 
-<file txt awk.txt> 
-1 B1 C1 
-2 B2 C2 
-3 B3 C3 
-4 B4 C4 
-5 B5 C5 
-6 B6 C6 
-7 B7 C7 
-8 B8 C8 
-9 B9 C9 
-10 B10 C10 
-11 B11 C11 
-12 B12 C12 
-13 B13 C13 
-14 B14 C14 
-15 B15 C15 
-16 B16 C16 
-17 B17 C17 
-18 B18 C18 
-19 B19 C19 
-20 B20 C20 
-21 B21 C21 
-22 B22 C22 
-23 B23 C23 
-24 B24 C24 
-25 B25 C25 
-26 B26 C26 
-27 B27 C27 
-28 B28 C28 
-29 B29 C29 
-30 B30 C30 
-31 B31 C31 
-32 B32 C32 
-33 B33 C33 
-</​file>​ 
- 
-awk.csv 
-```csv 
-1,B1,C1 
-2,B2,C2 
-3,B3,C3 
-4,B4,C4 
-5,B5,C5 
-6,B6,C6 
-7,B7,C7 
-8,B8,C8 
-9,B9,C9 
-10,B10,C10 
-11,B11,C11 
-12,B12,C12 
-13,B13,C13 
-14,B14,C14 
-15,B15,C15 
-16,B16,C16 
-17,B17,C17 
-18,B18,C18 
-19,B19,C19 
-20,B20,C20 
-21,B21,C21 
-22,B22,C22 
-23,B23,C23 
-24,B24,C24 
-25,B25,C25 
-26,B26,C26 
-27,B27,C27 
-28,B28,C28 
-29,B29,C29 
-30,B30,C30 
-31,B31,C31 
-32,B32,C32 
-33,B33,C33 
-``` 
- 
-fixedlength.txt 
-```txt 
-fixedlength 12345678900 abcdefghijk 
-12345678900 12345678900 abcdefghijk 
-abcdefghijk 12345678900 fixedlength 
-``` 
- 
-{{tag>​linux mac}} 
- 
- 
- 
  
memo/awk.txt · 最終更新: 2016/07/17 04:22 (外部編集)
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0

- Rental Orbit Space -