🐮

【Linux入門 #3】テキスト処理

2021/07/15に公開

はじめに

【Linux入門 #1】ファイルとディレクトリ
【Linux入門 #2】コマンド操作の基本
の続きです。

wcコマンド

入力ファイルの行数・単語数・バイト数を数えることができる

// 行数 単語数 バイト数 ファイル名が表示される
$ wc file1
11   19   253   file1

// 行数を表示
$ wc -l file1
11

// 単語数を表示
$ wc -w file1
19

// バイト数を表示
$ wc -c file1
253

sortコマンド

行を並び替えることができる

// アルファベット順にソート
$ sort file1
Akita
Chiba
Kagawa
Nagano

// 降順(逆順)にソート
$ sort -r file1
Nagano
Kagawa
Chiba
Akita

// 数値順にソート
$ sort -n number.txt
1
2
3
4
5

uniqコマンド

重複行を取り除く

// file1の内容を確認
$ cat file1
Hokkaido
Hokkaido
Akita
Akita
Miyagi
Miyagi
Akita

// 同じ行が連続している場合だけ重複を取り除ける
$ uniq file1
Hokkaido
Akita
Miyagi
Akita

// ソートすれば取り除ける
$ sort file1 | uniq
Hokkaido
Akita
Miyagi

cutコマンド

入力行の一部を切り出して出力する

// cut -d <区切り文字> -f <フィールド番号> <ファイル名>
// 「,」で区切った、3番目のフィールドを表示する
$ cut -d , -f 3 file.csv

trコマンド

文字を置き換えることができる

// iをAに置き換える
$ cat file1 | tr i A
HokkaAdo
AkAta
MAyagA

// 小文字から大文字に変換
$ cat file1 | tr a-z A-Z
HOKKAIDO
AKITA
MIYAGI

// 文字を削除
$ cat file1 | tr -d "i"
Hokkado
Akta
Myag

// ファイル名を指定するとエラーになる(標準入力に対して作用しないため)
$ tr file1 A-Z a-z
usage: tr [-Ccsu] string1 string2
       tr [-Ccu] -d string1
       tr [-Ccu] -s string1
       tr [-Ccu] -ds string1 string2

tailコマンド

末尾を表示する

// 末尾を表示
$ tail index.html
</body>
</html>

// 末尾1行を表示
$ tail -n 1 index.html
</html>

// 先頭1行を表示
$ head -n 1 index.html
<!DOCTYPE html>

diffコマンド

差分を表示する

// file1の3行目の後に file2の4,5行目が追加された
$ diff file1 file2
3a4,5
> Sendai
> Sizuoka
記号 内容
<範囲> 何行目かを示している
<範囲1>a<範囲2> 1つ目のファイルの<範囲1>の後に2つ目のファイルの<範囲2>が追加された
<範囲1>c<範囲2> 1つ目のファイルの<範囲1>が2つ目のファイルの<範囲2>に変更された
<範囲1>d<範囲2> 1つ目のファイルの<範囲1>が2つ目のファイルで削除された

参考書籍

新しいLinuxの教科書

Discussion