フィルタを使用した文字列操作 2

特定のフィールドを切り出す

cut コマンドの -d オプションで特定のフィールドを切り出す

 

スペース区切りの2フィールド目を切り出す

cut -d' ' -f2

 

カンマ区切りの1フィールド目と3フィールド目を切り出す

cut -d',' -f1,3

 

カンマ区切りの3フィールド目以降を切り出す

cut -d',' -f3-

 

タブ区切りの2フィールド目から5フィールド目を切り出す

cut -f2-5

 

特定の位置の文字を切り出す

cut コマンドの -c オプションで特定の位置の文字を切り出す

1文字目の文字を切り出す。
cut -c1

 

1文字目と3文字目の文字を切り出す。
cut -c1,3

 

1-2文字目の文字を切り出す。
cut -c1-2

 

3文字目以降を切り出す

cut -c3-

 

grep コマンドを使用したフィルタリング

特定の文字列を含む行のみを表示する

dがある行を表示

f:id:mkyosuke:20200311111831p:plain

 

“a” もしくは “z” を含む行を表示する

grep '[az]'

 

“f” から “l” のいずれかの文字を含む行を表示する

grep '[f-l]'

 

行全体が特定のパターンと一致する行を表示する

^ と、 $ でパターンを囲むことにより、指定したパターンと行全体が完全一致する行のみを表示することができる。

完全一致する行の検索は、-x オプションを指定することでも可能f:id:mkyosuke:20200311112819p:plain

 

OR 条件を使用した検索

f:id:mkyosuke:20200311113240p:plain

 

複数のファイルからパターンを含む行を検索し表示する

f:id:mkyosuke:20200311114302p:plain

引数に複数ファイルを指定することも可能

f:id:mkyosuke:20200311114612p:plain


特定の文字列を含まない行のみを表示する

-v オプションを使用

f:id:mkyosuke:20200311115143p:plain


行番号を付加して表示する

-n オプションを使用

f:id:mkyosuke:20200311115341p:plain

 

テキストファイルに行番号を付加したい場合

-n オプションと文字列 ''

f:id:mkyosuke:20200311115642p:plain

 

A行からB行までを切り出す

 -A オプションと -B オプションで特定の2行の行間を表示

対象となるデータが 1000000 行以内を指定

f:id:mkyosuke:20200311130425p:plain

 

head コマンドと tail コマンドを使用したフィルタリング

head コマンドで先頭から指定した行数分を表示

f:id:mkyosuke:20200311130931p:plain

 

先頭行から下から 3行目までを表示する

f:id:mkyosuke:20200311131322p:plain

 

最下行から 3行を表示する

tail コマンドを使用

f:id:mkyosuke:20200311131624p:plain

 

先頭行3行目から最下行までを表示する

f:id:mkyosuke:20200311131831p:plain

 

その他のコマンドを使用したフィルタリング

小文字から大文字へ変換する

tr コマンドを使用

f:id:mkyosuke:20200311133121p:plain

大文字から小文字へ変換する

f:id:mkyosuke:20200311133344p:plain

 

tr コマンドへの入力

ファイル内容を処理対象としたい場合は、cat コマンドとパイプを使用して tr コマンドに変換対象となるデータを標準入力から渡す必要あり

f:id:mkyosuke:20200311133652p:plain

 

空白で区切られた特定のフィールドを切り出す

awk '{ print $フィールド番号 }'

 

1フィールド目を切り出す

f:id:mkyosuke:20200311134124p:plain

 

対象となる行を特定してフィールドを切り出す

awk '(NR == 行番号){ print $フィールド番号 }'

 

3行目のみを処理対象とする

f:id:mkyosuke:20200311134607p:plain

 

1行目および3行目を処理対象とする

f:id:mkyosuke:20200311134947p:plain

 

2行目より大きいかつ4行目以下、つまり3行目から4行目までの行を処理対象とする

f:id:mkyosuke:20200311135158p:plain

 

空白で区切られたフィールドの順番を入れ替える

awk '{ print $フィールド番号" "$フィールド番号" "..." "$フィールド番号 }'

f:id:mkyosuke:20200311140843p:plain

 

" " を指定したので、フィールド間がスペースで区切られている

f:id:mkyosuke:20200311141124p:plain