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使用する組み込み変数がいくつかあります。問題がある場合は、私に連絡してください。
RedisはオープンソースのANSI C言語で、ネットワークをサポートし、メモリベースの永続ログタイプ、Key-Valueデータベースを提供し、多言語APIを提供します。 2010年3月15日から、R
ソフトは紹介割り込むプロセスが独立したハード割り込みハンドラから遅延させることができるので、このプロセスがオープン中断することなく実行することができ、このプロセスはソフト割り込みです。この目に見える
Linuxのコマンドライン初心者でもベテランでも、これらのヒントは役に立ちます。時間の節約、効率の向上、効率の向上。 Interest&hellip ;. 履歴コマンド これらのテクニックの大部分は
プロセスは単にプログラム実行のプロセスです、それは動的な概念です。どんなシステムでも、より多くのタスクが関係します、それはシステムのスピードに影響します、多くのプロセスは何の役割も果たさず、まだシステ