サーチ…
特定の行をテキストファイルから抽出する
ファイルがあるとします
cat -n lorem_ipsum.txt
1 Lorem Ipsum is simply dummy text of the printing and typesetting industry.
2 Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
3 It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
4 It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum
このファイルから2行目と3行目を抽出したい
awk 'NR==2,NR==3' lorem_ipsum.txt
行2と行3が表示されます:
2 Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
3 It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
特定の行から特定の列/フィールドを抽出する
以下のデータファイルがある場合
cat data.csv
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
多分あなたは3行目の4列目を読む必要があります。これは "24"
awk 'NR==3 { print $4 }' data.csv
与える
24
オンザフライで行を変更する(例:Windowsの行末を修正する)
ファイルにWindowsまたはUnixライクの行末(またはその両方が混在していても)が含まれている場合は、意図したテキストの置換が期待どおりに機能しないことがあります。
サンプル:
$ echo -e 'Entry 1\nEntry 2.1\tEntry 2.2\r\nEntry 3\r\n\r\n' \
> | awk -F'\t' '$1 != "" { print $1 }' \
> | hexdump -c
0000000 E n t r y 1 \n E n t r y 2 .
0000010 1 \n E n t r y 3 \r \n \r \n
000001d
これは、awkスクリプトの先頭に挿入される追加ルールによって簡単に修正できます:
/\r$/ { $0 = substr($0, 1, length($0) - 1) }
アクションはnextで終了しないため、以前と同様に次のルールが適用されます。
サンプル(行末の修正あり):
$ echo -e 'Entry 1\nEntry 2.1\tEntry 2.2\r\nEntry 3\r\n\r\n' \
> | awk -F'\t' '/\r$/ { $0 = substr($0, 1, length($0) - 1) } $1 != "" { print $1 }' \
> | hexdump -c
0000000 E n t r y 1 \n E n t r y 2 .
0000010 1 \n E n t r y 3 \n
000001a
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow