Linuxコマンド:grep awk sed詳細
3216 ワード
1、grep
regexは正規表現を指します-i:大文字と小文字は無視されます.大文字と小文字は区別されません.-ignore-caseでも指定できます. -v:一致しません.通常grepプログラムは、一致する項目を含むテキスト行を印刷します.このオプションによりgrepプログラムは、一致する項目を含まないテキスト行のみを印刷します.-invert-matchでも指定できます. -c:テキスト行自体ではなく、一致する数(または一致しない数、-vオプションが指定されている場合)を印刷します.-countオプションで指定することもできます. -l:テキスト行自体ではなく、一致する項目を含むファイル名を印刷します.-files-with-matchesオプションで指定できます. -L:-lオプションと似ていますが、一致しないファイル名を印刷するだけです.-files-without-matchで指定することもできます. -n:各一致行の前に、ファイル内にある対応する行番号を印刷します.-line-numberオプションも使用できます. -h:マルチファイル検索に適用され、ファイル名は出力されません.-no-filenameオプションも使用できます. -E:拡張正規表現 を使用
例:
2、awk
awkの組み込み変数:$0現在のレコード(この変数には行全体の内容が格納されている) $1~n現在記録されているn番目のフィールドは、フィールド間がFSで区切る である. FS入力フィールド区切り文字のデフォルトはスペースまたはTab です. NF現在のレコードのフィールド数は、 のカラム数です. NRで読み出したレコード数は、行番号であり、1から複数のファイルがあれば、この値もどんどん加算されます. FNR現在のレコード数は、NRとは異なり、この値は各ファイル独自の行番号 になります. RS入力レコード区切り記号、デフォルトは改行記号 OFS出力フィールド区切り記号、デフォルトもスペース ORS出力のレコード区切り文字、デフォルトは改行文字 FILENAME現在入力されているファイルの名前 例:
3、 sed
パラメータ:
-n
デフォルト出力をキャンセル
-r
拡張規則の使用
-i
ディスクにブラシをかける
-e
複数sed命令の実行
-f
命令をファイルに入れる
sed置換タグ:
表2 sed-command
a
追加
i
挿入
d
削除
c
指定した行を置換
s
行ごとに一致する最初の文字を置換
g
各行のすべてを置換
w
ファイルを保存
e
bashコマンドの実行
q
読み取りを続行しない
p
しゅつりょく
例:
grep [options] regex [file...]
regexは正規表現を指します
例:
# bz gz zip
grep -Eh '^(bz|gz|zip)' dirlist*.txt
# bz gz zip
grep -Eh '^bz|gz|zip' dirlist*txt
#
grep 'a' txt
#
grep '[a-z]' txt
grep '[A-Za-z0-9]' txt
grep '[^0-9]' txt ,
#
grep '.' passwd
2、awk
awk ' { }'
awk '$9 == 500 {print $9, $7}' access.log
awkの組み込み変数:
# :
awk -F ":" '{print $1, $3, $6}' xx.txt
# ett.txt ( 100 ) 20 30
awk ‘NR>19&&NR<31’ ett.txt
awk ‘{ if (NR>19&&NR<31) print $0}’ ett.txt
# 24
awk ‘NR==24 {print NR,$0}’ ett.txt
# : , 5 s
awk -F ":" '$5~/^s/{print $0}' ett.txt
# csv 2 300 , csv
awk -F ',' '{L[NR]=$2}END{for(i=NR-299;i<=NR;i++){ sum+=L[i]};{print $0,sum/300}}' test.csv >> min.csv
# ,
awk '{if($3>a[$1]){a[$1]=$3;b[$1]=$0}}END{for(i in b) print b[i]}' ett.txt
#
awk '{count[$1]++; if($2>400)above400[$1]++} END{ for(i in count){print i, count[i],above400[i]/count[i]} }' xxx.txt
3、 sed
sed [options] 'command' file(s)
パラメータ:
-n
デフォルト出力をキャンセル
-r
拡張規則の使用
-i
ディスクにブラシをかける
-e
複数sed命令の実行
-f
命令をファイルに入れる
sed置換タグ:
表2 sed-command
a
追加
i
挿入
d
削除
c
指定した行を置換
s
行ごとに一致する最初の文字を置換
g
各行のすべてを置換
w
ファイルを保存
e
bashコマンドの実行
q
読み取りを続行しない
p
しゅつりょく
例:
# test.txt
sed "1 i This is a test file" test.txt
#test.txt
sed "$ a This is the end of file" test.txt
# test.txt
sed "2d" test.txt
# test.txt /fish
sed "/fish/d" test.txt
# text.txt love like
sed "s/love/like/g" test.txt (/g )
# test.txt 5-7
sed -n "5,7p" test.txt (-n , -n )