Linuxのテキスト処理
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*Linuxのテキスト処理 [#ud6f5e60]
-[[Linuxコマンド]]
*テキストフィルタ(テキストデータを読込み処理結果を出力す...
**cat [#x709e193]
cat <file-name>
cat -n <file-name> ※左端に行番号を付加して表示
cat <file1> <file2> > <file3> ※file1とfile2を結合してfi...
**nl [#w3cc91e4]
nl <file-name> ※左端に行番号を付加して表示
nl -bt <file-name> ※本文への行番号の付加(空白以外の行に...
nl -ba <file-name> ※本文への行番号の付加(すべての行に付...
nl -bn <file-name> ※本文への行番号の付加(付加しない)
nl -ha <file-name> ※ヘッダへの行番号の付加(すべての行に...
nl -fa <file-name> ※フッタへの行番号の付加(すべての行に...
**od [#e006f6e8]
-8進数で表示
od <file-name>
od -to <file-name>
-16進数で表示
od -x <file-name> ※2バイト単位
od -tx <file-name> ※4バイト単位
od -tx1 <file-name> ※1バイト単位
od -tx2 <file-name> ※2バイト単位
od -tx4 <file-name> ※4バイト単位
※-Ax 表示位置を16進数にする
-ASCII文字で表示
od -c <file-name>
od -tc <file-name>
-並べて表示
od -tx1 -a <file-name> ※16進数とASCII文字を並べて表示
**head [#i5bfd6f4]
-先頭行の表示
head <file-name> ※先頭10行を表示
head -10 <file-name> ※先頭10行を表示(非推奨の書式)
head -n10 <file-name> ※先頭10行を表示
head -c10 <file-name> ※先頭10バイトを表示
**tail [#aa6a5cae]
-末尾行の表示
tail -10 <file-name> ※末尾10行を表示
tail -n10 <file-name> ※末尾10行を表示
tail -c10 <file-name> ※末尾10バイトを表示
tail -f <file-name> ※末尾の行をリアルタイムで表示し続け...
**tailf [#k5153f5c]
-※tail -f と同じ
**cut [#cd08bd52]
-固定長向け
cut -c5 <file-name> ※5文字目を取得
cut -c3-5 <file-name> ※3~5文字目を取得
-可変長向け(CSVなど)
cut -d, -f1 ※カンマ区切りの1カラム目を取得
cut -d" " -f1 ※スペース区切りの1カラム目を取得(スペー...
cut -d"\t" -f1 ※タブ区切りの1カラム目を取得
**paste [#u63bf9de]
-列方向でファイルを結合
paste <file1> <file2> ※タブ区切りで結合
paste -d, <file1> <file2> ※カンマ区切りで結合
paste -d"," <file1> <file2> ※カンマ区切りで結合
paste -d"\t" <file1> <file2> ※タブ区切りで結合
**tr [#ja6459ca]
-標準入力した文字列を変換・削除する
-書式
tr <オプション> <文字列>
--オプションに指定できるクラス
[:alpha:]
[:lower:]
[:upper:]
[:digit:]
[:alnum:]
[:space:]
-使い方例
--パイプを使う
cat <file-name> | tr 'a-z' 'A-X'
--リダイレクトを使う
tr 'a' '0' < <file-name>
tr 'abc' '012' < <file-name>
tr 'a-z' 'A-X' < <file-name>
tr [:lower:] [:upper:] < <file-name>
-変換
tr 'a-z' 'A-X' ※英字の小文字を大文字に変換
tr [:lower:] [:upper:] ※英字の小文字を大文字に変換
echo $PATH | tr ':' '\n'
-削除
tr -d '0-9' ※数字を削除
tr -dc '0-9' ※数字以外を削除
tr -d [:digit:] ※数字を削除
tr -d , ※カンマを削除
tr -d ',' ※カンマを削除
tr -d '\n' ※改行コード(ラインフィード)を削除
tr -d '\r' ※改行コード(キャリッジリターン)を削除(CRLFを...
-1つにまとめる
tr -s [:space:] ※複数の連続したスペースを1つにする
**fold [#a50576ef]
-指定した文字数で改行コードを挿入
fold -w 10 <file-name>
fold -10 <file-name>
※固定長を改行コード区切りにする
**sort [#m2ee04b1]
-並び替え
sort -b <file-name> ※行頭のスペースを無視する
sort -f <file-name> ※英字の大文字/小文字の区別をしない
sort -r <file-name> ※降順に並び替える
sort -n <file-name> ※数字を数値として扱う
**split [#we75419b]
split -10 <input-file> <output-file> ※10行ごとに分割し...
**uniq [#ze710902]
-重複する行に対する処理
uniq <file-name> ※連続で重複している行を1つにまとめる
uniq -d <file-name> ※連続で重複している行のみ出力する
uniq -u <file-name> ※連続で重複していない行のみ出力する...
sort <file-name> | uniq ※昇順に並び替えてから重複行を1...
**wc [#ed900b96]
wc -l <file-name> ※行数を表示
wc -c <file-name> ※文字数を表示
wc -w <file-name> ※単語数を表示
ls | wc -l ※ファイルとディレクトリの数を表示
**rev [#b6c4d981]
-入力した文字列を逆順で出力する(行単位で処理する)
echo -n "123" | rev
echo -n "123\nabc" | rev
rev <file-name>
*テキスト検索 [#o02a676a]
**fgrep [#l60287b7]
-fgrep <patterns> <file-name> 正規表現を使わない文字列検索
**strings [#z87ded70]
-バイナリファイルなどに含まれるASCII文字を検索する
strings -a <file-name> ※ファイル全体をスキャン
*テキスト検索([[正規表現]]) [#ra1af036]
**grep [#yb5e6f33]
-grep <patterns> <file-name> ※ファイルの文字列検索
grep -c
grep -i ※英字の大文字/小文字を区別しない
grep -n ※検索結果に行番号を表示
grep -v ※マッチしない行を表示
grep -v '^#' ※コメント行を除く
grep -v '^$' ※ブランク行(改行のみの行)を除く
grep -G ※基本正規表現
grep -E ※拡張正規表現
grep $'\t' ※タブ文字
grep '\s' ※スペース
-grep -e <patterns> <file-name> ※検索パターンの指定
grep -v -e "^#" -e "^$" ※コメント行と空行を除く
-grep -f <pattern-file> <file-name> ※検索パターンをファ...
-指定した文字を色付けする
grep --color "abc" ※抽出した行のみ出力
grep -E --color "$|abc" ※抽出した行以外も出力
grep --color=auto "abc"
GREP_COLOR="1;31" grep -E --color "$|abc"
**egrep [#ec02839b]
-拡張正規表現を使った文字列検索
-egrep <keyword> <file-name>
*テキスト編集(検索して削除・置換) [#tcc4b740]
**sed [#n8b730cd]
-実行パターン
--sed <command> ※指定したコマンドを実行
--sed -e <command> ※指定したコマンドを実行
--sed -e <command1> -e <command2> ※指定した複数のコマン...
--sed -f <script-file> ※コマンドを記述したスクリプトファ...
--sed -i <command> <replace-file> ※指定したコマンドを処...
-コマンド部の書式
--行削除(d) ※位置を指定
sed -e ‘[削除開始行],[削除終了行]d’
--置換(s) ※文字列(またはパターン)最初の1つのみ置換
sed -e 's/[置換前の文字列]/[置換後の文字列]/'
--置換(s) ※文字列(またはパターン)すべて置換
sed -e 's/[置換前の文字列]/[置換後の文字列]/g'
--削除(s) ※文字列(またはパターン)
sed -e 's/[削除対象の文字列]//g'
--置換(y) ※文字(指定した同じ位置の文字に置換)
sed -e 'y/[置換前の文字の並び]/[置換前の文字の並び]/g'
-実行例
--行削除(d)
sed '1,2d' input.txt ※1~2行目を削除
sed '2,$d' input.txt ※2行目~最終行を削除(1行目以外を削除)
--置換(s) ※文字列、パターン
sed s/test/sample/ input.txt ※"test"を"sample"に置換(1...
sed s/test/sample/g input.txt ※"test"を"sample"に置換(1...
sed '1,100s/^/#/' input.txt ※1~100行目の先頭に"#"を付加...
--置換(y) ※文字単位
sed y/ABC/abc/ input.txt ※置換文字列の同じ位置の文字に...
**awk [#re0d660d]
-標準入力から入力された値とパターンが一致した場合にコマン...
--パターンの記述
/拡張正規表現/
(条件式) ※0:偽、0以外:真
--変数
$0 ※引数全体
$1 ※1つ目の引数
-サンプル:パターンなし
awk '{print $1}' ※1カラム目を抽出
→入力モードに切り変わる
a b c
→1カラム目の"a"が出力される
[Ctrl + D] で入力モード終了
-awk '/<pattern>/<command>;'
--サンプル
awk '
/123/ {print "Yes it is!";}
'
-awk '(<pattern>)<command>;'
--サンプル
awk '
BEGIN { print "Hello"; }
($1>10) { print $1" is greater than 10"; }
($1<10) { print $1" is less than 10"; }
END { print "Bye"; }
'
*関連用語 [#xa15c0b3]
-[[Linuxのファイル操作]]
終了行:
*Linuxのテキスト処理 [#ud6f5e60]
-[[Linuxコマンド]]
*テキストフィルタ(テキストデータを読込み処理結果を出力す...
**cat [#x709e193]
cat <file-name>
cat -n <file-name> ※左端に行番号を付加して表示
cat <file1> <file2> > <file3> ※file1とfile2を結合してfi...
**nl [#w3cc91e4]
nl <file-name> ※左端に行番号を付加して表示
nl -bt <file-name> ※本文への行番号の付加(空白以外の行に...
nl -ba <file-name> ※本文への行番号の付加(すべての行に付...
nl -bn <file-name> ※本文への行番号の付加(付加しない)
nl -ha <file-name> ※ヘッダへの行番号の付加(すべての行に...
nl -fa <file-name> ※フッタへの行番号の付加(すべての行に...
**od [#e006f6e8]
-8進数で表示
od <file-name>
od -to <file-name>
-16進数で表示
od -x <file-name> ※2バイト単位
od -tx <file-name> ※4バイト単位
od -tx1 <file-name> ※1バイト単位
od -tx2 <file-name> ※2バイト単位
od -tx4 <file-name> ※4バイト単位
※-Ax 表示位置を16進数にする
-ASCII文字で表示
od -c <file-name>
od -tc <file-name>
-並べて表示
od -tx1 -a <file-name> ※16進数とASCII文字を並べて表示
**head [#i5bfd6f4]
-先頭行の表示
head <file-name> ※先頭10行を表示
head -10 <file-name> ※先頭10行を表示(非推奨の書式)
head -n10 <file-name> ※先頭10行を表示
head -c10 <file-name> ※先頭10バイトを表示
**tail [#aa6a5cae]
-末尾行の表示
tail -10 <file-name> ※末尾10行を表示
tail -n10 <file-name> ※末尾10行を表示
tail -c10 <file-name> ※末尾10バイトを表示
tail -f <file-name> ※末尾の行をリアルタイムで表示し続け...
**tailf [#k5153f5c]
-※tail -f と同じ
**cut [#cd08bd52]
-固定長向け
cut -c5 <file-name> ※5文字目を取得
cut -c3-5 <file-name> ※3~5文字目を取得
-可変長向け(CSVなど)
cut -d, -f1 ※カンマ区切りの1カラム目を取得
cut -d" " -f1 ※スペース区切りの1カラム目を取得(スペー...
cut -d"\t" -f1 ※タブ区切りの1カラム目を取得
**paste [#u63bf9de]
-列方向でファイルを結合
paste <file1> <file2> ※タブ区切りで結合
paste -d, <file1> <file2> ※カンマ区切りで結合
paste -d"," <file1> <file2> ※カンマ区切りで結合
paste -d"\t" <file1> <file2> ※タブ区切りで結合
**tr [#ja6459ca]
-標準入力した文字列を変換・削除する
-書式
tr <オプション> <文字列>
--オプションに指定できるクラス
[:alpha:]
[:lower:]
[:upper:]
[:digit:]
[:alnum:]
[:space:]
-使い方例
--パイプを使う
cat <file-name> | tr 'a-z' 'A-X'
--リダイレクトを使う
tr 'a' '0' < <file-name>
tr 'abc' '012' < <file-name>
tr 'a-z' 'A-X' < <file-name>
tr [:lower:] [:upper:] < <file-name>
-変換
tr 'a-z' 'A-X' ※英字の小文字を大文字に変換
tr [:lower:] [:upper:] ※英字の小文字を大文字に変換
echo $PATH | tr ':' '\n'
-削除
tr -d '0-9' ※数字を削除
tr -dc '0-9' ※数字以外を削除
tr -d [:digit:] ※数字を削除
tr -d , ※カンマを削除
tr -d ',' ※カンマを削除
tr -d '\n' ※改行コード(ラインフィード)を削除
tr -d '\r' ※改行コード(キャリッジリターン)を削除(CRLFを...
-1つにまとめる
tr -s [:space:] ※複数の連続したスペースを1つにする
**fold [#a50576ef]
-指定した文字数で改行コードを挿入
fold -w 10 <file-name>
fold -10 <file-name>
※固定長を改行コード区切りにする
**sort [#m2ee04b1]
-並び替え
sort -b <file-name> ※行頭のスペースを無視する
sort -f <file-name> ※英字の大文字/小文字の区別をしない
sort -r <file-name> ※降順に並び替える
sort -n <file-name> ※数字を数値として扱う
**split [#we75419b]
split -10 <input-file> <output-file> ※10行ごとに分割し...
**uniq [#ze710902]
-重複する行に対する処理
uniq <file-name> ※連続で重複している行を1つにまとめる
uniq -d <file-name> ※連続で重複している行のみ出力する
uniq -u <file-name> ※連続で重複していない行のみ出力する...
sort <file-name> | uniq ※昇順に並び替えてから重複行を1...
**wc [#ed900b96]
wc -l <file-name> ※行数を表示
wc -c <file-name> ※文字数を表示
wc -w <file-name> ※単語数を表示
ls | wc -l ※ファイルとディレクトリの数を表示
**rev [#b6c4d981]
-入力した文字列を逆順で出力する(行単位で処理する)
echo -n "123" | rev
echo -n "123\nabc" | rev
rev <file-name>
*テキスト検索 [#o02a676a]
**fgrep [#l60287b7]
-fgrep <patterns> <file-name> 正規表現を使わない文字列検索
**strings [#z87ded70]
-バイナリファイルなどに含まれるASCII文字を検索する
strings -a <file-name> ※ファイル全体をスキャン
*テキスト検索([[正規表現]]) [#ra1af036]
**grep [#yb5e6f33]
-grep <patterns> <file-name> ※ファイルの文字列検索
grep -c
grep -i ※英字の大文字/小文字を区別しない
grep -n ※検索結果に行番号を表示
grep -v ※マッチしない行を表示
grep -v '^#' ※コメント行を除く
grep -v '^$' ※ブランク行(改行のみの行)を除く
grep -G ※基本正規表現
grep -E ※拡張正規表現
grep $'\t' ※タブ文字
grep '\s' ※スペース
-grep -e <patterns> <file-name> ※検索パターンの指定
grep -v -e "^#" -e "^$" ※コメント行と空行を除く
-grep -f <pattern-file> <file-name> ※検索パターンをファ...
-指定した文字を色付けする
grep --color "abc" ※抽出した行のみ出力
grep -E --color "$|abc" ※抽出した行以外も出力
grep --color=auto "abc"
GREP_COLOR="1;31" grep -E --color "$|abc"
**egrep [#ec02839b]
-拡張正規表現を使った文字列検索
-egrep <keyword> <file-name>
*テキスト編集(検索して削除・置換) [#tcc4b740]
**sed [#n8b730cd]
-実行パターン
--sed <command> ※指定したコマンドを実行
--sed -e <command> ※指定したコマンドを実行
--sed -e <command1> -e <command2> ※指定した複数のコマン...
--sed -f <script-file> ※コマンドを記述したスクリプトファ...
--sed -i <command> <replace-file> ※指定したコマンドを処...
-コマンド部の書式
--行削除(d) ※位置を指定
sed -e ‘[削除開始行],[削除終了行]d’
--置換(s) ※文字列(またはパターン)最初の1つのみ置換
sed -e 's/[置換前の文字列]/[置換後の文字列]/'
--置換(s) ※文字列(またはパターン)すべて置換
sed -e 's/[置換前の文字列]/[置換後の文字列]/g'
--削除(s) ※文字列(またはパターン)
sed -e 's/[削除対象の文字列]//g'
--置換(y) ※文字(指定した同じ位置の文字に置換)
sed -e 'y/[置換前の文字の並び]/[置換前の文字の並び]/g'
-実行例
--行削除(d)
sed '1,2d' input.txt ※1~2行目を削除
sed '2,$d' input.txt ※2行目~最終行を削除(1行目以外を削除)
--置換(s) ※文字列、パターン
sed s/test/sample/ input.txt ※"test"を"sample"に置換(1...
sed s/test/sample/g input.txt ※"test"を"sample"に置換(1...
sed '1,100s/^/#/' input.txt ※1~100行目の先頭に"#"を付加...
--置換(y) ※文字単位
sed y/ABC/abc/ input.txt ※置換文字列の同じ位置の文字に...
**awk [#re0d660d]
-標準入力から入力された値とパターンが一致した場合にコマン...
--パターンの記述
/拡張正規表現/
(条件式) ※0:偽、0以外:真
--変数
$0 ※引数全体
$1 ※1つ目の引数
-サンプル:パターンなし
awk '{print $1}' ※1カラム目を抽出
→入力モードに切り変わる
a b c
→1カラム目の"a"が出力される
[Ctrl + D] で入力モード終了
-awk '/<pattern>/<command>;'
--サンプル
awk '
/123/ {print "Yes it is!";}
'
-awk '(<pattern>)<command>;'
--サンプル
awk '
BEGIN { print "Hello"; }
($1>10) { print $1" is greater than 10"; }
($1<10) { print $1" is less than 10"; }
END { print "Bye"; }
'
*関連用語 [#xa15c0b3]
-[[Linuxのファイル操作]]
ページ名: