sedとawkの一般的な方法
sedとawkは比較的基礎的なクラスUnixシステムでテキストを一括処理する良いものである.sedは行の編集を担当し,awkは列の編集を担当する.ここではこの方面の知識について少しお話しします.理解しなければならないのは、彼らの処理が行に従って行われていることだ.
sed
コマンドフォーマット
基本的なコマンドフォーマット:
オプション
オプション
意味
-n
サイレントモード
-e
複数の編集命令を入力
-i
are neat
-f
ブートsedスクリプトファイル名.
共通コマンド
オプション
意味
a
追加
d
削除コマンド
s
置換コマンド、正規の置換をサポート
i
挿入
p
出力、通常-nとともに使用
c
アドレスを直接置換
r
[address]r file、ファイル内容をaddress位置に挿入
w
[address]w file、address位置内容をファイルに書き込む
sedインスタンス
リファレンス
awk
コマンドフォーマット
最も基本的な使い方
これにより、現在実行中のプロセスの番号が印刷されます.最初の最後に自分の印刷を追加したい場合は
awkに組み込まれた変数
変数#ヘンスウ#
意味
ARGC
コマンドラインパラメータ個数
ARGV
コマンドラインパラメータの配置
ENVIRON
キュー内のシステム環境変数の使用をサポート
FILENAME
awkブラウズのファイル名
FNR
ブラウズファイルのレコード数
FS
コマンドライン-Fオプションと同等の入力フィールド区切り記号を設定します.
NF
ブラウズレコードのドメイン数
NR
読み取り済みレコード数
OFS
ドメイン区切り文字の出力
ORS
出力レコード区切り
RS
コントロールレコードセパレータ
最後の例で引き分け値を計算する際にNRを用いた.
printf構文
awk演算子
テキストを処理するときに簡単な演算をすることができます.
演算子
= += -= =/= %= ^= *=
ろんり
論理か&&論理と~~!正規表現と不一致正規表現<=>>=!==関係演算子
数学計算 プラス、 マイナス
/&乗、除与求余 ! 1元加算、減算論理非^*べき乗++–接頭辞または接尾辞として 増加または減少
≪インスタンス|Instance|emdw≫
最大値、合計値、平均値の計算
参考awkで実行するには2つのユニットに分けられ、各行の処理は前のカッコで実行されます.ENDの後の{}の内容は
最大値
合計
へいきんち
sed
コマンドフォーマット
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
基本的なコマンドフォーマット:
[address[,address]][!]command[agruments]
オプション
オプション
意味
-n
サイレントモード
-e
複数の編集命令を入力
-i
are neat
-f
ブートsedスクリプトファイル名.
共通コマンド
オプション
意味
a
追加
d
削除コマンド
s
置換コマンド、正規の置換をサポート
i
挿入
p
出力、通常-nとともに使用
c
アドレスを直接置換
r
[address]r file、ファイル内容をaddress位置に挿入
w
[address]w file、address位置内容をファイルに書き込む
sedインスタンス
リファレンス
awk
コマンドフォーマット
awk [-F field-separator] 'commands' input-file(s)
最も基本的な使い方
$ ps aux | awk '{print $2}'
これにより、現在実行中のプロセスの番号が印刷されます.最初の最後に自分の印刷を追加したい場合は
$ ps aux | awk 'BEGIN {print "this is head"} {print $2} END {print "this is tail"}'
awkに組み込まれた変数
変数#ヘンスウ#
意味
ARGC
コマンドラインパラメータ個数
ARGV
コマンドラインパラメータの配置
ENVIRON
キュー内のシステム環境変数の使用をサポート
FILENAME
awkブラウズのファイル名
FNR
ブラウズファイルのレコード数
FS
コマンドライン-Fオプションと同等の入力フィールド区切り記号を設定します.
NF
ブラウズレコードのドメイン数
NR
読み取り済みレコード数
OFS
ドメイン区切り文字の出力
ORS
出力レコード区切り
RS
コントロールレコードセパレータ
最後の例で引き分け値を計算する際にNRを用いた.
printf構文
awk -F ':' '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s
",FILENAME,NR,NF,$0)}' /etc/passwd
awk演算子
テキストを処理するときに簡単な演算をすることができます.
演算子
= += -= =/= %= ^= *=
ろんり
論理か&&論理と~~!正規表現と不一致正規表現<=>>=!==関係演算子
数学計算
≪インスタンス|Instance|emdw≫
最大値、合計値、平均値の計算
参考awkで実行するには2つのユニットに分けられ、各行の処理は前のカッコで実行されます.ENDの後の{}の内容は
$ cat test.log
0 0 147.086
0 10 141.269
0 20 10000
0 30 2805.22
0 40 152.003
0 50 144.762
0 60 144.926
最大値
cat test.log | awk '{if(m
{
if(m<$3) m=$3
}
END {
print m
}
合計
cat test.log | awk '{m+=$3} END{print m}'
{
m+=$3
}
END {
print m;
}
へいきんち
cat test.log | awk '{m+=$3} END{print m}'
{
m+=$3
}
END {
print m/NR;
}