ホームページ > php教程 > PHP开发 > Linuxのawkコマンドの使い方を詳しく解説

Linuxのawkコマンドの使い方を詳しく解説

高洛峰
リリース: 2016-12-15 11:14:07
オリジナル
1253 人が閲覧しました

簡単に説明すると、awk は grep 検索や sed 編集と比較して、データを分析してレポートを生成する場合に特に強力なテキスト分析ツールです。これは、Linux をプレイするために必要な基本スキルです。彼の人生経験を詳しく理解するには、自分で検索してください。ツールの知識について、著者はそれぞれの知識ポイントを簡単に説明し、例を示します。

簡単に言うと、awk はファイルを 1 行ずつ読み込み、デフォルトの区切り文字としてスペースを使用して各行をスライスし、切り取られた部分に対してさまざまな分析と処理を実行します。

使用法:
awk [options] 'scripts' file1,file2...
awk [options] 'pattern {action}' file1,file2...

options は、awk でサポートされるオプションです (-F -v など)。など; スクリプトは、パターンとアクションを含むその処理スクリプトです (パターンとアクションの関係は、一般に、パターンが有効なフィールドを決定する責任を負い、アクションがそれらのフィールドを処理する責任を負うということです)

1. print の簡単な使用法

簡単なテストを作成する ファイルは次のとおりです:

[root@mos download]# cat Demon.txt

mos ブログへようこそ。

これはテスト ファイルです。


例: 行全体を出力: $0

[root@mos download]# awk '{print $0}' demo.txt

mos ブログへようこそ。

これはテスト ファイルです。

例: 各行の最後のフィールドを出力します: $NF

[root@mos download]# awk ' {print $NF}' Demon.txt

blog.

file.

例: 2 番目のフィールドを出力します: $2

[root@mos download]# awk '{print $2 }' demo.txt

to

is

例: 各行の最後から 2 番目のフィールドを出力し、その後に OK を出力します

[root@mos download]# awk '{print $(NF-1),"OK" }' デモ.txt

mos OK

test OK

例: print linenumber

[root@mos download]# awk '{print NR,$0}' Demon.txt

1 mos ブログへようこそ

2 これはテスト ファイルです。

例: 現在のシステム環境変数の特定の値 (パスなど) を出力します。次の 2 つの出力は同じです

[root@mos download]# awk '{print ENVIRON[" USER"];}' デモ。txt

root

root

[root@mos download]# awk 'BEGIN{print ENVIRON["PATH"];}'

/usr/kerberos/sbin:/usr/ kerberos/bin:/usr/local /sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

追記: 以下のファイルは正常に実行される場合のみ使用できます。 print の BEGIN は実行前に出力可能 データはレポートタイトルやテスト出力として書き込まれることが多いですが、その内容は後述するファイル変更操作に関連する変数を取得できません

例: awk のデフォルトの区切り文字はスペースです。 、一部のテキスト単語は他の文字で表されます。次の 2 つの例は同じです

[root@mos download]# awk -F: {'print $1,$NF'} /etc/passwd|tail -1

mos1 /bin/bash

[root@mos download]# awk -v FS=: '{print $1,$NF}' /etc/passwd|head -1

root /bin/bash

例:出力区切り文字を変更します。特殊文字は次のようにエスケープする必要があります。 例:

[root@mos download]# awk -v OFS= '{print $1,$NF}' Demon.txt

Welcome.blog.

This.file.

[root@mos download]# awk -v OFS="~"'{print $1,$NF}' demo.txt

ようこそ~blog.

This~file.

[root @mos ダウンロード]# awk -v OFS=" '{print $1,$NF}' デモ.txt

ようこそ"ブログ.

この"ファイル.

[root@mos ダウンロード]# awk -v OFS=9 '{print $1,$NF}' デモ.txt

Welcome9blog.

This9file.

[root@mos download]# awk -v OFS=XXXX '{print $1,$NF}' デモ.txt

WelcomeXXXXblog .

ThisXXXXfile.

追記: print 出力フィールドにカンマがない場合、出力セパレータは無効になり、出力結果は直接結合されます。前にリストされているもの: $1~$n、$0、FS、OFS など。以下の図は、awk の組み込み変数テーブルを示しています:

属性の説明

$0 現在のレコード (単一の変数として)

$1~$n 現在のレコードの n 番目のフィールド、フィールドは FS で区切られています

FS デフォルトの入力フィールド区切り文字はスペースです

NF 現在のレコードのフィールド数は列数です

NR 読み取られたレコード数は 1 から始まる行番号です

RS 入力レコード区切り文字デフォルトは改行文字です

OFS 出力 デフォルトのフィールド区切り文字もスペースです

ORS 出力のレコード区切り文字、デフォルトは改行文字です

ARGC コマンドラインパラメータの数

ARGV コマンドラインパラメータ配列

FILENAME 現在の入力ファイルの名前

IGNORECASE true の場合、大文字と小文字を無視したマッチングを実行

ARGIND 現在処理されているファイルの ARGV 識別子

CONVFMT 数値変換形式 %.6g

ENVIRON UNIX 環境変数

ERRNO UNIXシステムエラーメッセージ

FIELDWIDTHS 入力フィールド幅を空白で区切った文字列

FNR 現在のレコード番号

OFMT 数値出力形式 %.6g

RSTART マッチング関数によって一致した最初の文字列

RLENGTH 一致した文字列の長さマッチング機能による

SUBSEP

免責事項: 多くの変数は著者が一般的に使用しないため、ここではすべてをリストしません。



Linux awk コマンドの使用方法の詳細については、PHP 中国語 Web サイトに注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート