Linux awkコマンドチュートリアルマニュアル、収集することをお勧めします!

多くの人がLinuxawkコマンドを使用したと思いますが、実際にそれを研究している人は多くありません。私たちのほとんどがBaiduのプログラミングをしているからです。今日はそれについて簡単に話します。

グーグルで調べたところ、二大神の記事が見つかりました。多くの人が知っていると思います。

Linux awkコマンドチュートリアルマニュアル、収集することをお勧めします!

私の記事は参考として彼らの記事に基づいており、いくつかのコンテンツを追加しました。

Awkはテキストファイルを処理するためのアプリケーションであり、ほとんどすべてのLinuxシステムにこのプログラムが付属しています。

AWKと呼ばれるのは、3人の創設者であるAlfred Aho、Peter Weinberger、BrianKernighanの家系の名前の最初の文字を使用しているためです。

awk構文

awk [オプションパラメーター] 'script' var = valuefile (s)
または
awk [オプションパラメーター] -f scriptfile var = value file(s)

オプションパラメータの説明:

  • -Ffsまたは--field-separatorfs

入力ファイルの区切り文字を指定します。fsは文字列または-F:などの正規表現です。

  • -v var = valueまたは--asignvar = value

ユーザー定義変数を割り当てます。

  • -fscripfileまたは--filescriptfile

スクリプトファイルからawkコマンドを読み取ります。

  • -mfnnnおよび-mrnnn

nnnの値に固有の制限を設定します。-mfオプションはnnnに割り当てられるブロックの最大数を制限し、-mrオプションはレコードの最大数を制限します。これらの2つの機能は、ベル研究所バージョンのawkの拡張機能であり、標準のawkには適用されません。

  • -Wコンパクトまたは--compat、-Wトラディショナルまたは--traditional

互換モードでawkを実行します。したがって、gawkは標準のawkとまったく同じように動作し、すべてのawk拡張機能は無視されます。

  • -W copyleftまたは--copyleft、-Wcopyrightまたは--copyright

短い著作権情報を印刷します。

  • -Wヘルプまたは--help、-W使用法または--usage

すべてのawkオプションと各オプションの簡単な説明を印刷します。

  • -Wlintまたは--lint

従来のUNIXプラットフォームに移植できない構造に関する警告を出力します。

  • Wlint-oldまたは--lint-old

従来のUNIXプラットフォームに移植できない構造に関する警告を出力します。

  • -W posix

互換モードをオンにします。ただし、認識されない次の制限があります。/x、関数キーワード、func、エスケープシーケンス、およびfsがスペースの場合、改行はフィールド区切り文字として使用されます。演算子=は^と^ =を置き換えることはできません。は無効です。

-Wre-intervalまたは--re-inerval

間隔正規表現の使用を許可します。ブラケット式[[:alpha:]]などの(grepのPosix文字クラス)を参照してください。

-W sourceprogram-textまたは--sourceprogram-text

プログラムテキストをソースコードとして使用します。これは、-fコマンドと組み合わせることができます。

-Wバージョンまたは--version

バグレポート情報のバージョンを印刷します。

基本的な使い方

xttblog.txtファイルの内容を例として取り上げましょう。

2

これ
はテストです

3


あなたはawkが好きです

5
WWW

Xttblog

COM
、アマチュア草

この
'
saテスト

10


オレンジ

リンゴ

モンゴがあります

awk '{print $ 1、$ 4}' xttblog.txtコマンドを実行すると、次のコンテンツが表示されます。

Linux awkコマンドチュートリアルマニュアル、収集することをお勧めします!

上記の例では、各行がスペースまたはTABで分割され、出力テキストの項目1と4が出力されます。awk '{printf "%-8s%-10s \ n"、$ 1、$ 4}' xttblog.txtは、出力コンテンツのフォーマットされた表示用です。

区切り文字を指定する例を見てみましょう。

awk -F#-Fは組み込み変数FSと同等であり、分割文字を指定します

「、」を使用して分割します。

$ awk

F

'{print $ 1、$ 2}'
xttblog

txt

2

この

ある
テスト

3


あなたはawkが好きです

5
WWW

Xttblog

Comのの
アマチュア草

これ
はテストです

10オレンジアップルがあります

組み込み変数を使用します。

$ awk'BEGIN
{FS = "、"} {print $ 1、$ 2} '
xttblog

txt

2

この

ある
テスト

3


あなたはawkが好きです

5
WWW

Xttblog

Comのの
アマチュア草

これ
はテストです

10オレンジアップルがあります

複数の区切り文字を使用します。スペースを使用して最初に除算し、次に「、」を使用して除算の結果を除算します。

$ awk

F
'[、]'

'{print $ 1、$ 2、$ 5}'
xttblog

txt

2

この
テスト

3

ある
AWK

5
WWW

xttblog

com

これ

10そこにリンゴ

設定変数の使い方を見てみましょう。変数を設定するには、awk-vを使用します

$ awk

va

1

'{print $ 1、$ 1 + a}'
xttblog

txt

2

3

3

4

5

6

これは
1

10 11

2つの変数を設定する例。

$ awk

va

1

-
VB

s
'{print $ 1、$ 1 + a、$ 1b}'
xttblog

txt

2

3

2秒

3

4

3秒

5

6

5秒

これは
1これは
ss

10

11

10秒

awkの力は、そのawkスクリプトにあります。

$ awk -f {awkスクリプト} {ファイル名}

オペレーターも同時にサポートされます。

Linux awkコマンドチュートリアルマニュアル、収集することをお勧めします!

例:最初の列が2より大きい行をフィルター処理します。

$ awk
'$ 1>
2'xttblog

txt

3


あなたはawkが好きです

5
WWW

Xttblog

COM
、アマチュア草

これ
はテストです

10オレンジ、リンゴ、モンゴがあります

最初の列が2に等しい行をフィルタリングします。

$ awk
'$ 1 == 2 {print $ 1、$ 3}'
xttblog

txt

2

です

最初の列が2より大きく、2番目の列が「Are」に等しい行をフィルタリングします。

$ awk
'$ 1> 2 && $ 2 == "Are" {print $ 1、$ 2、$ 3}'
xttblog

txt

3

ある
あなたは、

Awkは組み込み変数もサポートしています。

Linux awkコマンドチュートリアルマニュアル、収集することをお勧めします!
Linux awkコマンドチュートリアルマニュアル、収集することをお勧めします!

$ awk'BEGIN
{printf "%4s%4s%4s%4s%4s%4s%4s%4s%4s \ n"、 "FILENAME"、 "ARGC"、 "FNR"、 "FS"、 "NF"、 " NR "、" OFS "、" ORS "、" RS "; printf" --------------------------------- ------------ \ n "} {printf"%4s%4s%4s%4s%4s%4s%4s%4s%4s \ n "、FILENAME、ARGC、FNR、FS、NF 、NR、OFS、ORS、RS} '
xttblog

txt

ファイル名ARGCFNR FS NF NR OFS ORS RS


xttblog

txt
2

1

5

1

xttblog

txt
2

2

5

2

xttblog

txt
2

3

2

3

xttblog

txt
2

4

3

4

xttblog

txt
2

5

4

5

テキスト行番号と一致するシーケンス番号NRを出力します。

$ awk
'{print NR、FNR、$ 1、$ 2、$ 3}'
xttblog

txt

1

1

2

この

です

2

2

3

ある
あなたは、

3

3

5
WWW

Xttblog

COM
、アマチュア草

4

4

これ
はテストです

5 510あります

出力区切り文字を指定します。

$ awk
'{print $ 1、$ 2、$ 5}'
OFS

"$"
xttblog

txt

2
$
この
$テスト

3
$

$ awkです

5
$のWWW

Xttblog

Comの
、アマチュア草
$

これは
$ a $

10 $あり$

Awkは、通常の文字列照合もサポートしています。

2番目の列に「th」が含まれていることを出力し、2番目と4番目の列を出力します。

$ awk
'$ 2〜 / th / {print $ 2、$ 4}'
xttblog

txt

これ

上記のコマンドで、〜はモードが開始することを意味します。//真ん中がモードです。

出力に「、」が含まれている別の行を見てみましょう。

$ awk
'/、/'
xttblog

txt

5
WWW

Xttblog

COM
、アマチュア草

10


オレンジ

リンゴ

モンゴがあります

Awkは大文字と小文字を区別しません。

$ awk'BEGIN
{IGNORECASE = 1} / this / '
xttblog

txt

2

この

ある
テスト

awkモードが逆になります。

$ awk
'$ 2!〜/ th / {print $ 2、$ 4}'
xttblog

txt


ような

WWW

xttblog

COM
、アマチュア草

a

そこに
オレンジ

リンゴ

モンゴ

$ awk
'!/ th / {print $ 2、$ 4}'
xttblog

txt


ような

WWW

xttblog

COM
、アマチュア草

a

そこに
オレンジ

リンゴ

モンゴ

Awkはawkスクリプトもサポートしています。スクリプトファイルは.awkで終わります。

awkスクリプトには、2つの重要なキーワードBEGINとENDがあります。

BEGIN {これは実行前のステートメントです}

END {これはすべての行を処理した後に実行されるステートメントです}

{各行を処理するときに実行されるステートメントは次のとおりです

簡単なxttblog.awkスクリプトを見てみましょう。

#!/ bin / awk -f

#前に実行

ベギン

{{

math 

=

0

english 

=

0

computer 

=

0

printf 

「名前番号数学英語コンピュータ合計\ n」

printf 

"--------------------------------------------- \ n"

}

#ランニング

{{

math

+ =
$ 3

english

+ =
$ 4

computer

+ =
$ 5

printf 

"%-6s%-6s%4d%8d%8d%8d \ n"

$ 1

$ 2

$ 3

$ 4

$ 5

$ 3
+
$ 4
+
$ 5

}

#実行後

終わり

{{

printf 

"--------------------------------------------- \ n"

printf 

"合計:%10d%8d%8d \ n"

数学

英語

コンピューター

printf 

"平均:%10.2f%8.2f%8.2f \ n"

数学
/
NR

英語
/
NR

コンピューター
/
NR

}

このスクリプトには多くのコードが含まれているようです。helloworldスクリプトを見てみましょう。

エコー
|
awk
'{print "Hello、World!"}'

エコー
|
awk'BEGIN
{print "Hello、World!"} '

awk'BEGIN
{print "Hello、World!"} '

echo
"hello world"

|
awk
'{print}'

Awkは非常に強力で、運用と保守に適しており、Java開発者は学ぶことができます。この記事を集めることをお勧めします!

おすすめ

転載: blog.51cto.com/15127565/2664720
おすすめ