Linux(Linux Essentials)7-6.grepと列・リスト・テキスト・表の操作

今回紹介するのは以下
grep正規表現
grepのオプション
・列の操作(cut)
・リストの並び替え(sort)
・テキスト操作のコマンド
・表の操作(grep、cut、sort、paste)






grep正規表現
・.(ピリオド):任意の一文字
・[]:カッコ内のいずれかと一致
・[^]:カッコ内のいずれにも一致しない
・+(プラス):直前に指定したパターンの1回以上の繰り返しに一致
・*:直前に指定したパターンの0回以上の繰り返しに一致
・?:直前に指定したパターンの0回または1回の繰り返しに一致
・|(パイプ):区切った文字列のいずれかに一致
・^:行の先頭
・$(ドル):行の末尾
・\(バックスラッシュ)」直前の一文字を通常の文字として扱う




grepのオプション
・-i:大文字と小文字を同一文字として扱う
・-v:パターンに一致しない行を抽出
・-H:行の先頭にファイル名を付加する
・-h:行の先頭にファイル名を付加しない
・-n:行の先頭に行番号を付加する
・-r:引数にディレクトリを指定して全てのファイルを検索



■列の操作(cut)
・cut -f 1,2,5 ファイル名
⇒ファイルの1列目と2列目と5列目を抽出
※-fでフィールド(列番号)を指定。「,(カンマ)」で列番号の区切り
・cut -d , -f 1,2,4 ファイル.csv
csv形式のファイルより1列目と2列目と4列目を抽出
※-dで対象ファイルがcsv形式に対応する
※「,(カンマ)」で区切り文字に指定する(列番号の区切りと混同しない事)



■リストの並び替え(sort)
・sort -n -k 2 ファイル名
⇒ファイルの2列目を数値化してキー列にして並び替え
※-nで指定した列を数値化して扱う
※-kで指定した列をキー列にする
・sort -n -k 4 -t, ファイル名
csv形式のファイルを「,(カンマ)」を区切り文字にして、4列目を数値化してキー列にして並び替え
※「-t,」で「,(カンマ)」区切り文字にする


■テキスト操作のコマンド
・past:行ごとに複数ファイルからフィールドをマージする
・join:同じキーでソートしている複数ファイルからマージ
・uniq:ソートされているファイルから同一の行を削除(※sort済であることが前提)
sed:行ごとに文字数のお置換などを行う
awk:簡単なスクリプト言語で文字列を処理する


■表の操作(grep、cut、sort、paste)
grep ~ | cut ~ > ファイル名
⇒必要な行を抽出(または不要な行を削除)して、さらに必要な列を切り出してファイルに書き込む

grep ~ | sort ~ | cut > ファイル名
⇒上記の処理を、sortで並び替えた上で行う



・paste ファイルA ファイルB ファイルC | cat ファイルD -
⇒ファイルA・B・Cを結合させて、ファイルDに取り込む
※「-」を引数に指定して取り込んでいる