Linuxのテキスト処理†
テキストフィルタ(テキストデータを読込み処理結果を出力する機能)†
cat†
cat <file-name>
cat -n <file-name> ※左端に行番号を付加して表示
cat <file1> <file2> > <file3> ※file1とfile2を結合してfile3を作成
nl <file-name> ※左端に行番号を付加して表示
nl -bt <file-name> ※本文への行番号の付加(空白以外の行に付加する)
nl -ba <file-name> ※本文への行番号の付加(すべての行に付加する)
nl -bn <file-name> ※本文への行番号の付加(付加しない)
nl -ha <file-name> ※ヘッダへの行番号の付加(すべての行に付加する)
nl -fa <file-name> ※フッタへの行番号の付加(すべての行に付加する)
head†
tail†
tailf†
cut†
- 固定長向け
cut -c5 <file-name> ※5文字目を取得
cut -c3-5 <file-name> ※3~5文字目を取得
- 可変長向け(CSVなど)
cut -d, -f1 ※カンマ区切りの1カラム目を取得
cut -d" " -f1 ※スペース区切りの1カラム目を取得(スペース1文字区切り)
cut -d"\t" -f1 ※タブ区切りの1カラム目を取得
paste†
- 標準入力した文字列を変換・削除する
- 書式
tr <オプション> <文字列>
sort†
split†
split -10 <input-file> <output-file> ※10行ごとに分割したファイルを作成する(末尾がaa,ab,ac,..で作成)
uniq†
wc -l <file-name> ※行数を表示
wc -c <file-name> ※文字数を表示
wc -w <file-name> ※単語数を表示
ls | wc -l ※ファイルとディレクトリの数を表示
rev†
テキスト検索†
fgrep†
- fgrep <patterns> <file-name> 正規表現を使わない文字列検索
strings†
grep†
- grep -f <pattern-file> <file-name> ※検索パターンをファイルから読み込む
egrep†
- 拡張正規表現を使った文字列検索
- egrep <keyword> <file-name>
テキスト編集(検索して削除・置換)†
sed†
- 実行パターン
- sed <command> ※指定したコマンドを実行
- sed <command> ※指定したコマンドを実行
- sed -e <command> ※指定したコマンドを実行
- sed -e <command1> -e <command2> ※指定した複数のコマンドを実行
- sed -f <script-file> ※コマンドを記述したスクリプトファイルを読み込んで実行
- sed -i <command> <replace-file> ※指定したコマンドを処理した結果でファイルを更新
- コマンド部の書式
- 行削除(d) ※位置を指定
sed -e ‘[削除開始行],[削除終了行]d’
- 置換(s) ※文字列(またはパターン)
sed -e 's/[置換前の文字列]/[置換後の文字列]/g'
- 削除(s) ※文字列(またはパターン)
sed -e 's/[削除対象の文字列]//g'
- 置換(y) ※文字(指定した同じ位置の文字に置換)
sed -e 'y/[置換前の文字の並び]/[置換前の文字の並び]/g'
- 実行例
- 行削除(d)
sed '1,2d' input.txt ※1~2行目を削除
sed '2,$d' input.txt ※2行目~最終行を削除(1行目以外を削除)
- 置換(s) ※文字列、パターン
sed s/test/sample/ input.txt ※"test"を"sample"に置換(1行に複数ある場合は左の1件のみ)
sed s/test/sample/g input.txt ※"test"を"sample"に置換(1行に複数ある場合は全て)
sed '1,100s/^/#/' input.txt ※1~100行目の先頭に"#"を付加する
- 置換(y) ※文字単位
sed y/ABC/abc/ input.txt ※置換文字列の同じ位置の文字に置換(A→a,B→b,C→c)
awk†
awk '{print $1}' ※1カラム目を抽出
関連用語†