テキスト系Command詳細


■cat[テキストファイルの閲覧/ファイル連結]

◆説明:テキストファイルの閲覧/ファイル連結
◆構文:cat [オプション] [ファイル名]
◆オプション
・-b:空白以外に行番号を付加
・-n:全てに行番号を付加
・-s:連続した空白を1行の空白にする
◆例文
a.datとb.datを結合しab.datに出力

$cat a.dat b.dat>ab.dat


■comm[ソート済みファイルのマッチング]

◆説明:2つの入力ファイルを比較し、3列からなる表を出力
・1列目=1つ目のファイルにのみ存在する行
・2列目=2つ目のファイルにのみ存在する行
・3列目=両方のファイルに存在する行
*ファイルを指定しない/ファイルに" - "を指定した場合は標準入力から読込む。
◆構文:comm [オプション] [ファイル名1] [ファイル名2]
◆オプション
・-1:1列目の表示をしない
・-2:2列目の表示をしない
・-3:3列目の表示をしない
◆例文
a.txtとb.txtを比較

$comm a.txt b.txt


■cut[フィールド/カラムを取り出して表示]

◆説明:指定した行のフィールド(カラム)だけを表示
◆構文:cut [オプション] [ファイル名]
◆オプション
・-c [位置]:取り出すカラムの位置を指定(複数指定可/範囲指定可)
・-f [位置]:取り出すフィールドの位置を指定(複数指定可/範囲指定可)
・-d [区切り文字]:フィールドの区切り文字を指定
・-s:区切り文字がある行だけを出力
◆例文
week.txtの最初の3文字を出力

$cut -c1-3 week.txt


■diff[テキストファイルの比較]

◆説明:2つのテキストファイルの内容を比較し結果を出力
*ファイルに" - "を指定すると標準入力から読み込む。
◆構文:diff [オプション] [ファイル名1] [ファイル名2]
◆オプション
・-a:テキストファイルとして1行ずつ比較
・-b:空白数の違いを無視
・-i:大文字/小文字の違いを無視
・-q:ファイルが違うかどうかのみ表示
・-r:ディレクトリの比較の場合サブディレクトリも再帰的に比較
◆例文
a.txtとb.txtが同じかどうかチェック

$diff -q hoge.txt hogehoge.txt


■echo[文字列の表示]

◆説明:指定した文字列を標準出力へ出力
◆構文:echo [オプション] [文字列 ・・・]
◆オプション
・-e:文字列中のエスケープ文字を有効
・-n:最後の引数の後の改行しない
◆例文
"Error"と表示

$echo Error


■expand[テキスト内のタブをスペースに変換]

◆説明:テキスト内のタブをスペースに変換
◆構文:expand [オプション] [ファイル名]
◆オプション
・-i:行頭のタブのみ変換
・-t [スペース数]:タブ幅(スペース数)を指定(デフォルトは8)
◆例文
a.txtのタブをスペース数1で変換

$expand -t 1 a.txt


■fmt[テキストフォーマットの変更]

◆説明:テキストファイルのフォーマットを変更
*ファイルが指定されていない場合標準入力から読み込む(デフォルトの行幅=75桁)。
◆構文:fmt [オプション] [ファイル名]
◆オプション
・-p [文字列]:文字列で始まる行のみテキストを整形
・-s:行の分割のみ行い結合しない
・-w [桁数]:テキストの行幅を桁数に(デフォルト=75桁)
◆例文
hogehoge.txtを桁数100で表示

$fmt -w 100 hogehoge.txt


grep[ファイルから指定した文字列を検索]

◆説明:ファイル中から一致した行を表示
◆構文:grep [オプション] [正規表現] [ファイル名]
◆オプション
・-c:一致した行の数だけ表示
・-i:比較の際大文字と小文字を区別しない
・-n:一致した行の前に行番号を付加
・-v:パターンに一致しなかった行だけを表示
◆例文
1.car.txtからnsxを検索

$grep -i 'nsx' car.txt

2.car.txtからTOYOTAで始まる全ての行を表示

$grep -i '^toyota' car.txt


■head[ファイルの最初の数行を表示]

◆説明:ファイルの最初の数行を表示
◆構文:head [オプション] [ファイル名]
◆オプション
・-c [バイト数]:先頭から出力するバイト数を指定
・-n [行数]:先頭から出力する行数を指定
◆例文
week.txtを先頭から2行表示

$head -n 2 week.txt
Sunday
Monday


■indent[C言語ソースファイルを見栄えよく変換]

◆説明:入力ソースコードを読みやすく変換/C言語のスタイル(GNUK&R、Berkeley)を変換
*ファイルを指定しない/ファイルに" - "を指定した場合は標準入力から読み込む。
◆構文:indent [オプション] [ファイル名]
◆オプション
・-bad:宣言部の後に空行を挿入
・-bap:手続き部(関数等)の後に空行を挿入
・-gnuC言語ソースコードGNUスタイルに変換(default)
・-kr:C言語ソースコードをKernighan & Ritchieスタイルに変換
・-o [出力ファイル名]:結果を出力するファイルを指定
・-orig:C言語ソースコードをBerkeleyスタイルに変換
・-st:結果を標準出力に書出す
・-ts [タブ幅]:タブ幅(スペース数)を指定(default=8)
◆例文
hoge.cのソースコードGNUスタイルに変換しhoge_gnu.cに出力

$indent hoge.c -o hoge_gnu.c


■join[2つのファイルのフィールドが共通な行を結合]

◆説明:ソート済みファイルのフィールドが共通の行を結合
*ファイルを指定しない/ファイルに" - "を指定した場合は標準入力から読み込む(フィールドは1つのスペースで区切られて出力)。
◆構文:join [オプション] [ファイル名1] [ファイル名2]
◆オプション
・-1 [フィールド番号]:1つ目のファイルのフィールド番号目のフィールドで結合
・-2 [フィールド番号]:2つ目のファイルのフィールド番号目のフィールドで結合
・-i:大文字/小文字の違いを無視
◆例文
join1.txtとjoin2.txtを共通の2つ目のフィールドで結合

$join -1 2 -2 2 join1.txt join2.txt


■less[テキストファイルをページ単位表示]

◆説明:テキストファイルの内容をページ単位で表示
◆構文:less [ファイル名]
◆操作
・q:終了
・e:1行分進む
・k:1行分戻る
・f:1画面分進む
・b:1画面分戻る
・/[文字列]:文字列を末尾方向に検索し移動
・?[文字列]:文字列を先頭方向に検索し移動
・g:先頭に移動
・G:末尾に移動



■more[テキストファイルをページ単位表示]

◆説明:テキストファイルの内容をページ単位で表示
◆構文:more [オプション] [ファイル名]
◆操作
・q:終了
・s:1行分進む
・f:1画面分進む
・b:1画面分戻る
・/[文字列]:文字列を末尾方向に検索



nkf[漢字コードを変換し標準出力に出力]

◆説明:入力ファイルの漢字コードを自動判定し漢字コード(JIS/シフトJISEUC)に変換
*ファイルを指定していない場合は標準入力から読み込む。
*結果は標準出力に書き出されるが、リダイレクトによりファイルへの書き込みも可能。
◆構文:nkf [オプション] [ファイル名]
◆オプション
・-e:EUCコードで出力
・-j:JISコードで出力
・-Lm:改行コードを" CR " (MAC)で出力
・-Lu:改行コードを" LF " (UNIX)で出力
・-Lw:改行コードを " CR/LF " (Windows)で出力
・-s:シフトJISコードで出力
◆例文
hoge.txtのテキストを漢字コード=シフトJIS/改行コード=CR/LFでhoge_henkan.txtに出力

$nkf -s -Lw hoge.txt > hoge_henkan.txt


■nl[ファイルに行番号を付加]

◆説明:ファイルに行番号を付けて出力
*ページは3セクション(ヘッダ/ボディ/フッタ)で構成、各々別形式の番号付けが可能。
*デフォルトではボディ部は空行でない行は番号付けされ、ヘッダ部/フッタ部は番号付けしない。
*ファイルを指定しない/ファイルに" - "を指定した場合は標準入力から読み込む。
◆構文:nl [オプション] [ファイル名]
◆オプション
・-ba:ボディ部の全行に番号を付加
・-bn:ボディ部に番号を付加しない
・-bt:ボディ部の空行には番号を付加しない
・-bp [文字列]:ボディ部の文字列と一致した行のみ番号を付加
・-fa:フッタ部の全行に番号を付加
・-fn:フッタ部に番号を付加しない
・-ft:フッタ部の空行には番号を付加しない
・-fp [文字列]:フッタ部の文字列と一致した行のみ番号を付加
・-ha:ヘッダ部の全行に番号を付加
・-hn:ヘッダ部に番号を付加しない
・-ht:ヘッダ部の空行には番号を付加しない
・-hp [文字列]:ヘッダ部の文字列と一致した行のみ番号を付加
・-i [増分]:行番号の増分を指定(default=1)
・-nln:行番号のフォーマットを左詰め
・-nrn:行番号のフォーマットを右詰め
・-nrz:行番号のフォーマットを右詰め/0埋め
・-s [文字列]:行番号とテキストの間に文字列を挟む(default=TAB)
・-v [番号]:行番号の開始番号を指定(default=1)
◆例文
1.a.txtに行番号を付加(行番号=右詰め/0埋めで、間に" : "文字を挟む)

$nl -ba -nrz -s : a.txt

2.a.txtに行番号を付加(debianという文字列にのみ)

$nl -bpdebian a.txt


■paste[指定されたファイルの行を結合]

◆説明:指定されたファイルを行単位で結合
*ファイルを指定しない/ファイルに" - "を指定した場合標準入力から読み込む。
*デフォルトでは行はタブ文字で区切られて出力。
◆構文:paste [オプション] [ファイル名]
◆オプション
・-d [区切り文字]:行を区切り文字で区切る/複数指定した場合順番に使用され繰り返し
◆例文
a.txtとb.txtとc.txtを行単位で結合(区切り文字は" : "および" ? ")

$paste -d :? a.txt b.txt c.txt


■pr[テキストファイルを印刷用に整形]

◆説明:テキストファイルを印刷用に整形し出力
*デフォルトでは
・空行2行/日付/ファイル名/ページ番号からなる行/空行2行の5行からなるヘッダ
・空行5行からなるフッタ
・ページの行数は66行
*ファイルを指定しない/ファイルに" - "を指定した場合標準入力から読み込む。
◆構文:pr [オプション] [ファイル名]
◆オプション
・+[開始ページ] : [終了ページ]:開始ページから終了ページまでを出力(終了ページを省略した場合最後まで出力)
・-d:行と行の間に空行を挿入
・-e [タブ幅]:タブ幅(スペース数)を指定
・-f:ヘッダの最初の空行2行およびフッタの5行を省略
・-h [名前]:ヘッダのファイル名を名前で置換(-h "" で名前を空に)
・-l [ページの行数]:ページの行数を指定(default=66行)
・-n:ファイルの最初の行から行番号を付加
・-o [インデント幅]:各行頭をスペースでインデント(default=0)
・-t:ヘッダ/フッタの付加、改ページを行わない(入力ファイルのフォームフィールドは残る)
・-T:ヘッダ/フッタの付加、改ページを行わない(入力ファイルのフォームフィールドも無効)
・-W [ページ幅]:ページ幅を指定。はみ出した場合は切り捨て(default=72桁)
◆例文
a.txtを印刷用に整形(ヘッダ名を" Linux "にする)

$pr -h Linux a.txt


■qkc[文字コードを変換しファイルそのものを上書き]

◆説明:入力ファイルの漢字コードを自動判定し、漢字コード(JIS/シフトJISEUC)に変換(結果は変換対象のファイルそのものを上書き)
◆構文:qkc [オプション] [ファイル名]
◆オプション
・-e:EUCコードで出力
・-j:JISコードで出力
・-m:改行コードを " CR/LF " (Windows)で出力
・-ma:改行コードを" CR " (MAC)で出力
・-O:nkfのように標準出力に書き出し
・-s:シフトJISコードで出力
・-u:改行コードを" LF " (UNIX)で出力
◆例文
hoge.txtのテキストを漢字コードをシフトJIS/改行コードをCR/LFに上書き

$qkc -sm hoge.txt


sed[高度なテキスト処理]

◆説明:文字列の置換/削除/挿入
◆構文:sed [オプション] [コマンド] [ファイル名]
◆オプション
・-e:次にくるのがコマンドとする
・-f:次にくるのがスクリプトとする
◆コマンド
・d:行を削除
・-s///:それぞれの行で最初に一致した文字列だけ置換(s/パターン/置換文字列/)
・-s///g:全体を置換(s/パターン/置換文字列/g)
・-s///[数値]:各々の行で指定した数値番目の文字列だけ置換(s/パターン/置換文字列/数値)
◆例文
1.sample.txtの1から4行目を削除

$sed '1,4d' week.txt

2.sample.datファイル中の見本という文字をsampleに置換

$sed 's/見本/sample/g' sample.dat

3.days.txtの行頭に「僕は」を挿入

$sed 's/^/僕は/g' days.txt


■sort[行の並べ替え]

◆説明:テキストファイルを行単位で並べ替え
◆構文:sort [オプション] [キーの位置指定] [ファイル名]
◆オプション
・-b:行頭が空白の場合無視
・-f:大文字/小文字を区別しない
・-n:数値として並べ替え
・-r:降順に並べ替え(指定しない場合は昇順)
・-t [文字]:指定文字を区切り文字とする(default=空白)
・-u:同一キーであるフィールドが複数存在する場合1行だけ出力
・-k [数値1](,数値2):数値1番目のフィールドから数値2番目のフィールドをキーとする(先頭フィールドは1)
・+[数値]:数値+1番目のフィールドの最初の文字からキーとする
・-[数値]:数値-1番目のフィールドの最後の文字までをキーとする(指定しない場合は行末まで)
◆例文
1.sample.txtを点数の高い順に並べ替え

$sort -n -r -k 2,2 sample.txt

2.sample.txtを名前順に並べ替え

$sort -k 1,1 sample.txt


■split[ファイルの分割]

◆説明:ファイルを指定サイズに分割し各ファイルに出力
*ファイルを指定しない/ファイルに" - "を指定した場合は標準入力から読み込み。
*デフォルトではファイルは1000行ごとに分割。
*分割されたファイルを結合するにはcatコマンドを使用。
◆構文:split [オプション] [ファイル名] [ファイル名]
◆オプション
・-[行数]:分割する行数を指定(default=1000行)
・-b [バイト数]:分割するバイト数を指定(" k ":キロバイト/" m ":メガバイトを使用可。例.100ketc.)
◆例文
1.sample.txtを10行ごとにout_から始まるファイルに分割

$split -10 sample.txt out_

2.分割したout_から始まるファイルをketugou.txtに結合

$cat out_* > ketugou.txt


■tac[テキストファイルを逆順に表示]

◆説明:テキストファイルの内容を区切り文字を基準に逆順表示
*デフォルトでは区切り文字=改行文字なので行単位で逆順表示
◆構文:tac [オプション] [ファイル名]
◆オプション
・-s [区切り文字]:区切り文字を指定
◆例文
z.txtを逆順に表示

$tac z.txt


■tail[ファイルの最後の数行を表示]

◆説明:ファイルの最後の数行を表示
◆構文:tail [オプション] [ファイル名]
◆オプション
・-行数:出力する行数を指定
・-c:行数でなくバイト数で指定(デフォルトは10行)
・-f:ファイルの最後に追加される文字をリアルタイムに表示
◆例文
week.txtの最後の1行を表示

$tail -1 week.txt

■tr[文字の変換/削除]

◆説明:標準入力から読み込んだ文字列を変換/削除(リダイレクトによりファイル中の文字列の変換/削除も可能)
◆構文:tr [オプション] [文字列1] [文字列2]
◆オプション
・-d:文字列1を削除
・-s:文字列1の繰り返しをその文字1文字に変換
*文字列に指定できるものは以下の通り

  • 文字の繰り返し→" aaaaa "としたい場合[a*5]と記述可能
  • 範囲指定→A-Z=全英大文字/0-9=全数字
  • 文字クラス→あらかじめ定義されたある文字の集合。" [:クラス名:] "で指定
    • alnum:英文字と数字
    • alpha:英文字
    • cntrl:制御文字
    • digit:数字
    • lower:英小文字
    • punct:句読点
    • upper:英大文字

◆例文
sample.htmlを大文字に変換(リダイレクトを使用)

$tr [:lower:] [:upper:] < a.html


■uniq[重複行の削除]

◆説明:ソート済みファイルの重複行を削除
◆構文:uniq [オプション] [ファイル名]
◆オプション
・-c:同一行の数も出力
・-d:重複行のみ表示
・-u:重複のない行のみ表示
◆例文
sample.txtの重複行を1行にまとめ同一行の数も出力

$uniq -c sample.txt


■wc[テキストファイルのバイト数/単語数/行数を表示]

◆説明:テキストファイルのバイト数/スペースで区切られた単語数/行数を表示
*デフォルトではすべて表示。
*ファイルを複数指定した場合は全表示され最後に合計も表示。
*ファイルを指定しない/ファイルに" - "を指定した場合は標準入力から読み込み。
◆構文:wc [オプション] [ファイル名]
◆オプション
・-c:バイト数のみ表示
・-l:行数のみ表示
・-w:単語数のみ表示
・-L:ファイル中の最大行長のみ表示
◆例文
sample1.txt、sample2.txtのバイト数/単語数/行数を表示

$wc sample1.txt sample2.txt