テキスト処理
ファイルの中身を見る
cat・less・head・tail など、テキストファイルの中身を表示するコマンド。ログの監視(tail -f)もここ。
cat中身をそのまま表示する / つなげる
ファイルの中身をそのまま表示します。複数のファイルをつなげるのにも使います。
$ cat notes.md
$ cat -n main.go # 行番号を付ける
$ cat part1 part2 > all.txt # つなげて1つのファイルにする
$ cat -A config.ini # タブ(^I)や改行(\$)などの見えない文字を表示ヒアドキュメントで複数行のファイルを作るときにもよく使います。
cat > hello.sh <<'EOF'
#!/usr/bin/env bash
echo "hello"
EOFlessページ単位で読む
長いファイルやコマンドの出力を、スクロールしながら読みます。
$ less /var/log/syslog
$ journalctl | less
$ less -N main.go # 行番号付き
$ less -S wide.csv # 長い行を折り返さない(左右にスクロール)
$ less +F app.log # tail -f のように追いかける(Ctrl+C で通常表示に戻る)| キー | 動作 |
|---|---|
| Space / b | 1画面進む / 戻る |
| j / k | 1行進む / 戻る |
| g / G | 先頭 / 末尾 |
/文字列 / ?文字列 | 下 / 上に検索(n で次) |
&文字列 | 一致する行だけ表示 |
| F | 末尾を追いかける |
| q | 終了 |
head先頭だけ表示する
ファイルの先頭の数行だけを表示します。
$ head access.log # 先頭10行
$ head -n 3 data.csv # 先頭3行
$ head -c 100 file.bin # 先頭100バイト
$ head -n -5 file.txt # 最後の5行を除いてすべてtail末尾だけ表示する / 追いかける
ファイルの末尾の数行を表示します。-f を付けると、追記されるログをリアルタイムに見られます。
$ tail app.log # 末尾10行
$ tail -n 50 app.log
$ tail -n +2 data.csv # 2行目から最後まで(見出し行を飛ばす)
$ tail -f /var/log/nginx/access.log # 追記されるたびに表示し続ける
$ tail -F app.log # ファイルが作り直されても追いかける(ログのローテーション向け)
$ tail -f app.log | grep --line-buffered ERRORtac行を逆順に表示する
ファイルを最後の行から逆順に表示します。
$ tac access.log | head # 新しい行から見るnl行番号を付ける
行番号を付けて表示します。
$ nl -ba script.sh # 空行にも番号を付けるxxd / odバイナリを16進数で見る
ファイルの中身を16進数などで表示します。
$ xxd image.png | head
$ xxd -l 16 file.bin # 先頭16バイトだけ
$ od -c text.txt # 1文字ずつ表示(改行コードの確認に便利)column表の形に揃える
テキストを表の形に揃えて表示します。
$ mount | column -t
$ column -s, -t < data.csv | less -S # CSVを表の形で見るstringsバイナリから文字列を取り出す
Ubuntu には最初から入っていません。 で入れられます。
バイナリファイルの中から、読める文字列だけを取り出します。
$ strings /usr/bin/ls | grep -i version