Linuxテキスト処理三剣客
4871 ワード
1. grep
テキストフィルタ(モード:pattern)ツール、grep、egrep、fgrep(正規表現検索はサポートされていません) はサポートされていません.
2. sed
sedは、1行のコンテンツを一度に処理するストリームエディタです.処理時には、現在処理する行を一時バッファに格納し、「モード空間」と呼ぶ(pattern space)は、次にsedコマンドでバッファ内の内容を処理し、処理が完了するとバッファの内容をスクリーンに送る.そして下りを読み込んで次のループを実行する.「D」のような特殊なコマンドを使用しないと、2つのループの間にモードスペースはクリアされるが、予約スペースはクリアされない.これはファイルの最後まで繰り返される.ファイル内容リダイレクトストレージ出力を使用しない限り、変更はありません.オプション scriptアドレス境界 アドレスを与えない:全文を処理する シングルアドレス: アドレス範囲: ~:ステップ1~2奇数行2~2偶数行 編集コマンド: を有効にします. の使用をサポート であるs///:置換を検索し、他の区切り文字を使用することをサポートします.s@@@,s####置換タグ:
3. awk
レポートジェネレータ、テキスト出力のフォーマット、複数のバージョン:New awk(nawk)、GNU awk(gawk) program:pattern{action statements;..} pattern部は、動作文がいつイベントBEGINをトリガおよびトリガするかを決定し、END action statementsデータを処理し{}内に置いてprint,printf を示す
オプション: 分割子、ドメイン、レコードawkの実行時に、区切り子で区切られたフィールド(ドメイン)タグ1,1,2.nをドメインID、nをドメインID、0をすべてのドメインと呼びます.actionを省略すると、print$0の操作がデフォルトで実行されます. 変数FS:フィールド区切り記号を入力します.OFS:フィールド区切り記号を出力します.RS:記録区切り記号を入力する.ORS:レコード区切り記号を出力する;NF:フィールド数;NR:記録番号;NFR:各ファイルはそれぞれカウントし、記録番号.FILENAME:現在のファイル名;ARGC:コマンドラインのパラメータ;ARGV:配列で、コマンドラインによって与えられた各パラメータが保存されます.
注意:以上は内蔵変数で、参照時に前に$を追加する必要はありません.新しい変数を作成するたびに-vを追加する必要があります.変数名との間にスペースがあるかどうかは構いません.変数は参照後に宣言できますが、その行の出力は空白行を出力します.
printfコマンド フォーマット 書式
item表現形式
%c
文字を表示するASCIIコード
%d, %i
10進数の表示
%e, %E
科学カウント法の数値を表示
%f
浮動小数点数として表示
%g, %G
数値を科学的カウントまたは浮動小数点で表示
%s
文字列の表示
%u
符号なし整数
%%
%自身を表示修飾子 書式
item表現形式
#[.#]
最初の数値は表示の幅を制御します.2番目の#は小数点以下の精度を表し、%3.1 f
-
左揃え(デフォルト右揃え)%-15 s
+
数値の正負記号%+dを表示
オペレータ 算術オペレータ:x+y,x-y,x*y,x/y,x^y,x%y-x:負数+xに変換:数値 に変換比較オペレータ:=,!=,>,>=,
パターンマッチング:~:左と右のマッチングが含まれているかどうか!~:一致しないかどうか 論理オペレータ:&&、または、非! 関数呼び出し: 条件式(三目式): PATTERN:pattern条件により一致する行をフィルタリングし、処理する 指定されていない場合:空のモードは、各行 に一致します.relational expression:関係式、結果は「真」で処理されます line ranges:行範囲startline,endline: BEGIN/ENDモード awk制御文
テキストフィルタ(モード:pattern)ツール、grep、egrep、fgrep(正規表現検索はサポートされていません)
grep [OPTIONS] PATTERN [FILE...]
--color=auto
一致するテキストに対するシェーディング表示-v
patternに一致しない行を表示-i
文字の大文字と小文字を無視-n
一致する行番号を表示-c
統計一致行数-o
一致する文字列のみを表示-q
サイレントモード、何も出力しない-A #
after,後#行-B #
before,前の行-C #
context,前後各#行-e
複数のオプション間の論理or関係を実現grep –e ‘cat ’ -e ‘dog’ file
-w
単語全体に一致-E
使用ERE,相当于egrep-F
はfgrepに相当し、正規表現2. sed
sedは、1行のコンテンツを一度に処理するストリームエディタです.処理時には、現在処理する行を一時バッファに格納し、「モード空間」と呼ぶ(pattern space)は、次にsedコマンドでバッファ内の内容を処理し、処理が完了するとバッファの内容をスクリーンに送る.そして下りを読み込んで次のループを実行する.「D」のような特殊なコマンドを使用しないと、2つのループの間にモードスペースはクリアされるが、予約スペースはクリアされない.これはファイルの最後まで繰り返される.ファイル内容リダイレクトストレージ出力を使用しない限り、変更はありません.
sed [option]... 'script' inputfile
-n
モード空間コンテンツを画面に出力しない、すなわち自動印刷しない-e
マルチポイント編集-f
/PATH/SCRIPT_FILE:指定ファイルから編集スクリプトを読み込む-r
拡張正規表現の使用をサポート-i.bak
ファイルをバックアップし、元の場所で編集#
:指定された行,$:最後の行/pattern/
:ここでモードに一致する各行#,#
#,+#
/pat1/,/pat2/
`,/pat 1/d
パターン空間が一致する行を削除し、すぐに次のループp
現在のモード空間の内容を印刷し、デフォルト出力に追加した後a [\]text1
指定された行の後ろにテキストを追加し、複数行追加i [\]text
行の前にテキストを挿入c [\]text
置換動作単行または複数行テキストw /path/somefile
保存モード一致の行から指定ファイルr /path/somefile
指定されたファイルのテキストをパターン空間で一致する行に読み出した後=
は、モード空間における行印刷行番号!
モード空間におけるマッチング行取逆処理g
行内グローバル置換p
置換に成功した行を表示w /PATH/TO/SOMEFILE
置換に成功した行をファイルに保存3. awk
レポートジェネレータ、テキスト出力のフォーマット、複数のバージョン:New awk(nawk)、GNU awk(gawk)
awk [options] 'program' file…
-F
入力時に使用するフィールド区切り記号を示す-v var=value
カスタム変数注意:以上は内蔵変数で、参照時に前に$を追加する必要はありません.新しい変数を作成するたびに-vを追加する必要があります.変数名との間にスペースがあるかどうかは構いません.変数は参照後に宣言できますが、その行の出力は空白行を出力します.
printf “FORMAT” , item1, item2, ...
は自動的に改行されません.FORMATでは、後のitemごとにフォーマットを指定する必要があります.item表現形式
%c
文字を表示するASCIIコード
%d, %i
10進数の表示
%e, %E
科学カウント法の数値を表示
%f
浮動小数点数として表示
%g, %G
数値を科学的カウントまたは浮動小数点で表示
%s
文字列の表示
%u
符号なし整数
%%
%自身を表示
item表現形式
#[.#]
最初の数値は表示の幅を制御します.2番目の#は小数点以下の精度を表し、%3.1 f
-
左揃え(デフォルト右揃え)%-15 s
+
数値の正負記号%+dを表示
function_name(argu1, argu2, ...)
selector?if-true-expression:if-false-expression
/regular expression/
:パターンマッチング可能な行のみを処理するには、/で囲む必要がある/pat1/,/pat2/
直接数値フォーマットを与えることはサポートされていません{ statements;… }
組合せ文if(condition) {statements;…}
if(condition) {statements;…} else {statements;…}
while(conditon) {statments;…}
do {statements;…} while(condition)
for(expr1;expr2;expr3) {statements;…}
break
continue
delete array[index]
delete array
exit
awk [-F|-v] ' {XXX;XXX;printf “”,XXX,XXX}'