!!!Linux テキスト処理 [Linux][Linux コマンド] {{amazon 487311070X}} !!!フィルタを使ってテキストストリームを処理 *Linuxにはフィルタコマンドが多数用意されていて、テキストを効率的に加工できる *複数のコマンドを結合してテキストストリームを作成すると、コマンドのパイプラインを形成し、その各段階でテキストに変更を加えることができる !!cut *指定の列またはフィールドを抜き出して表示 !!expand *タブを空白文字に変換 !!fmt *テキストを指定の長さに政経 !!head *ファイルの先頭数行を表示する !!join *file1で指定したファイルとfile2で指定したファイルを1行ずつ読み込み、結合フィールドが共通な行を結合する join [options] file1 file2 ::file1 1 one 2 twe 3 three ::file2 1 11 2 22 3 33 ::結果 $ join -j 2 file1 file2 1 one 11 2 twe 22 3 three 33 !!nl *ファイルの内容に行番号を付加して標準出力に書き込む !!od *8進数またはその他の形式でファイルをダンプする !!paste *ファイルを読み込み、互いに一致する行をタブで区切って出力する !!pr *ファイルを読み込み、ヘッダを付け、ページ単位の区切り処理や段落の処理をして 標準出力する !!split *ファイルを指定の行数で分割する !!tac *ファイルの行を逆順にして標準出力する !!tail *ファイルの末尾の指定行を出力する !!tr *string1で指定した文字をstring2で指定した対応する文字に変換する ::例 *小文字をすべて大文字に変換 $ cat file1 | tr a-z A-Z !!wc *ファイルの文字数、単語数、行数をカウントする !!xargs *commandで指定したコマンドを実行する initial-argument で引数を指定した、標準入力からの追加引数を指定することも可能 xargs [option] [command] [initial-argument] ::例 *通常ファイル(-type f)をルートディレクトリを起点に再帰的に検索 *xargs は-n 1 オプションが指定されているので見つかったファイル毎に一度 grep を実行する $ find / -type f | xargs -n 1 grep linux !!!ストリームエディタ (sed) *大部分のUnixシステムに搭載されている sed (ストリームエディタ)も重要なフィルタコマンド *ストリームエディタは、通常標準入力から流れてくるテキストのストリーミングを、フィルタ処理によって編集して標準出力に渡す *多様な機能を持つプログラミング可能なユーティリティ sed [options] 'command1' file sed [options] -e 'command1' [-e 'command2' ...] [file] sed [options] -f script [file] !!コマンド !d *行を削除 ::例 *3行めから5行目までを削除 $ sed '3,5d' sample.txt *#で始まる行を削除 $ sed '/^#d' sample.txt !s *置換を行う s/pattern.replacement/[flags] ::flags ,flag,内容 ,g,すべての出現箇所を置換 ,n,n番目の出現箇所を置換 ,p,置換が正常終了したら、置換行を出力 ,w file名,置換が正常終了したら、行をファイルに出力 ,y,文字を変換 ::例 *aが出現したら、すべてをxに、同様にbはyに、cはzに変換する $ sed 'y/abc/xyz/' sample.txt *空行(改行のみの行)の代わりに@を書き込む $ sed 's/^$/@/' sample.txt *二重引用符を削除 $ sed 's/"//g' sample.txt ::スクリプトファイルを使用する例 *1行目から10行目までを編集対象とし、3行目と4行目の二重引用符を(と)に置き換える *sedcmds 1,10 { $/"/(/3 $/"/)/4 } *実行 $ sed -f sedcmds sample.txt !!テキストとページング !less ::よく使われるコマンド ,コマンド,説明 ,Space,1画面下へスクロール ,d,半画面下へスクロール ,Enter,1行下へスクロール ,b,1画面上へスクロール ,u,半画面上へスクロール ,y,1行上へスクロール ,g,先頭へ移動 ,[nn]g,指定行nnへ移動 ,[nn]j,指定行nnジャンプ ,/pattern,patternに一致する文字を下へ検索 ,?pattern,patternに一致する文字を上へ検索 ::オプション ,オプション,内容 ,-N,行番号表示 ,-n,行番号非表示