Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxのawk組み込み変数の紹介

Linuxのawk組み込み変数の紹介

  

awkは優れたテキスト処理ツールであり、プログラミング言語と言えるでしょう。下記はawk組み込み変数です。

1.組み込み変数テーブル

属性の説明$ 0現在のレコード(単一変数として)$ 1〜$ nフィールド間のFSで区切られた現在のレコードのn番目のフィールドFS入力フィールド区切り文字のデフォルトスペースNFは現在のレコードのフィールド数です。つまり、RS入力レコードの先頭からNRがレコード数、つまり行番号を読み取った行数です。区切り文字はデフォルトで改行OFSになります。出力フィールド区切り文字もスペースORSです。出力レコード区切り文字、デフォルトは改行です。ARGCコマンドラインパラメータ番号ARGVコマンドラインパラメータ配列FILENAME現在の入力ファイル名IGNORECASE trueの場合、現在処理中のファイルの大文字と小文字を区別しないARGIND ARGVフラグCONVFMT数値変換フォーマット%.6g ENVIRON UNIX環境変数ERRNO UNIXシステムエラーメッセージFIELDWIDTHS入力フィールド幅空白区切り文字列FNR現在のレコード番号OFMT数値出力フォーマット%.6g RSTART一致文字列一致RLENGTH一致文字列長SUBSEP \\ 034


2、インスタンス

1、一般的に使用される操作

[chengmo @ localhost〜] $ awk '/^ root /{print $ 0}' /etc /passwd root:x:0:0:root:/root:/bin /bash < Br>

/^ root /は選択式です。$ 0テーブルはプログレッシブです。



2.フィールドセパレータの設定(FSの使用方法)

[chengmo @ localhost〜] $ awk 'BEGIN { FS =":"} /^ root /{print $ 1、$ NF} '/etc /passwdroot /bin /bash


FSは自分で設定できるフィールドセパレータです。 passwdは':'で区切られているため、デフォルトはスペースです。したがって、デフォルトの区切り文字を変更する必要があります。 NFはフィールドの総数、$ 0は現在の行レコード、$ 1- $ nは現在の行を表し、各フィールドは値に対応します。

3、レコード数(NR、FNRの使用方法)

[chengmo @ localhost〜] $ awk 'BEGIN {FS =":"} {print NR、$ 1、$ /etc /passwd1 root /bin /bash2 bin /sbin /nologin3デーモン/sbin /nologin4 adm /sbin /nologin5 lp /sbin /nologin6 sync /bin /sync7 shutdown /sbin /shutdown………………< /p > NRは現在のレコード行を取得します。

4、出力フィールドの区切り文字を設定します(OFSの使用方法)

[chengmo @ localhost〜] $ awk ' OFS =" ^^"} /^ root /{印刷FNR、$ 1、$ NF} '/etc /passwd1 ^^ root ^^ /bin /bash


OFSの設定デフォルトのフィールドセパレータ

5、出力行のレコードセパレータを設定する(ORSの使用方法)


[chengmo @ localhost〜] $ awk 'BEGIN {FS =" :"; ORS =" ^^"} {print FNR、$ 1、$ NF} '/etc /passwd 1 root /bin /bash ^^ 2 bin /sbin /nologin ^^ 3 daemon /sbin /nologin ^ ^ 4 adm /sbin /nologin ^^ 5 lp /sbin /nologin


上記のように、ORSはデフォルトで改行になります。これは次のように変更されます。' ^^'、すべての行' ^^'で区切ります。

6.入力パラメータの取得(ARGC、ARGV用)

[chengmo @ localhost〜] $ awk 'BEGIN {FS =":"; print" ARGC =" ARGC; for(ARGVのk){print k "=" ARGV [k];}} '/etc /passwdARGC = 20 = awk1 = /etc /passwd


ARGCがすべて取得パラメータ数を入力すると、ARGVは入力パラメータの内容を取得し、配列になります。


7、渡されたファイル名を取得します(FILENAMEを使用します)

[chengmo @ localhost〜] $ awk 'BEGIN {FS =":"; print FILENAME} {print FILENAME} '/etc /passwd

/etc /passwd

FILENAME、$ 0〜$ N、NFはBEGINで使用できません。BEGINはファイル操作を取得できません。可変です。


8. Linux環境変数(ENVIRONで使用)を取得します。

[chengmo @ localhost〜] $ awk 'BEGIN {print ENVIRON [" PATH"];}' /etc /passwd /usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/lib/icecc/bin:/usr/

local /bin :/bin:/usr /bin:/usr /local /sbin:/usr /sbin:/sbin:/usr /java /

jdk1.5.0_17 /bin:/usr/java/jdk1.5.0 _17 /jre /bin:/usr /local /mysql /bin:/home /web97 /bin

ENVIRONは、対応するキーの値によってその値を取得できる、一般的ではない配列です。


9.出力データ形式の設定:(OFMT用)

[chengmo @ localhost〜] $ awk 'BEGIN {OFMT ="%。3f"; print 2 /3,123.111111111;} '/etc /passwd 0.667 123.111


OFMTのデフォルトの出力フォーマットは次のとおりです。%.6g小数点以下6桁を保持します。ここでOFMTを変更すると、デフォルトのデータ出力フォーマットが変更されます。


10、区切り文字を幅で指定します(FIELDWIDTHSで使用)。

[chengmo @ localhost〜] $ echo 20100117054932 |

awk 'BEGIN {FIELDWIDTHS =" 4 2 2 2 2 3"} {print $ 1" - $ 2" - " $ 3、$ 4":" $ 5":" '2010-01-17 05:49:32


FIELDWIDTHSは、フィールドとレコードを区切るために使用される、スペースで区切られた数字のリストです(FIELDWIDTHS =" 4 2 2 2 2 2 "は、$ 1の幅が4、$ 2が2、$ 3が2 ...を意味します。今回は無視します:FS区切り記号。


11、RSTART RLENGTHは

を使用します[chengmo @ localhost〜] $ awk 'BEGIN {開始=一致

("これはテストです";、/[az] + $ /);印刷開始、RSTART、RLENGTH} '11 11 4 [chengmo @ localhost〜] $ awk 'BEGIN

{start = match("これはテストです。 、/^ [az] + $ /);印刷開始、RSTART、RLENGTH} '0 0 - nd 1;


RSTARTは正規表現の最初の位置に一致し、RLENGTHは文字の長さに一致します。 -1としては見つかりません。


上記のものは、次のとおりです。awk使用する組み込み変数がいくつかあります。問題がある場合は、私に連絡してください。

Copyright © Windowsの知識 All Rights Reserved