「Linux テキスト処理」の版間の差分
ナビゲーションに移動
検索に移動
1行目: | 1行目: | ||
− | ==Linux テキスト処理== | + | ==[[Linux テキスト処理]]== |
[[Linux]] | [[Linux コマンド]] | | [[Linux]] | [[Linux コマンド]] | | ||
{{amazon|487311070X}} | {{amazon|487311070X}} | ||
==フィルタを使ってテキストストリームを処理== | ==フィルタを使ってテキストストリームを処理== | ||
− | * | + | *[[Linux]]にはフィルタコマンドが多数用意されていて、テキストを効率的に加工できる |
*複数のコマンドを結合してテキストストリームを作成すると、コマンドのパイプラインを形成し、その各段階でテキストに変更を加えることができる | *複数のコマンドを結合してテキストストリームを作成すると、コマンドのパイプラインを形成し、その各段階でテキストに変更を加えることができる | ||
===cut=== | ===cut=== | ||
32行目: | 32行目: | ||
*ファイルの内容に行番号を付加して標準出力に書き込む | *ファイルの内容に行番号を付加して標準出力に書き込む | ||
===od=== | ===od=== | ||
− | * | + | *8進数または[[その他]]の形式でファイルをダンプする |
===paste=== | ===paste=== | ||
*ファイルを読み込み、互いに一致する行をタブで区切って出力する | *ファイルを読み込み、互いに一致する行をタブで区切って出力する |
2020年2月16日 (日) 04:28時点における最新版
Linux テキスト処理
Linux | Linux コマンド |
フィルタを使ってテキストストリームを処理
- 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に一致する文字を上へ検索 |
オプション
オプション | 内容 |
---|---|
行番号表示 | |
行番号非表示 |
© 2006 矢木浩人