Awk はテキスト ファイルを処理するためのアプリケーションであり、ほぼすべての Linux システムにこのプログラムが付属しています。 ファイルの各行を順番に処理し、その中の各フィールドを読み取ります。各行が同じ形式であるログや CSV などのテキスト ファイルの場合、awk が最も便利なツールになる可能性があります。 Awk はツール ソフトウェアであるだけでなく、プログラミング言語でもあります。ただし、この記事ではコマンドラインの使用方法のみを紹介しており、ほとんどの場合これで十分でしょう。 1. 基本的な使い方 awk の基本的な使い方は次のようになります。 # フォーマット $awk アクションファイル名 # 例 $awk '{print $0}' demo.txt 上記の例では、demo.txt は awk によって処理されるテキスト ファイルです。一重引用符内には中括弧があり、その中に各行の print $0 という処理アクションが含まれています。このうち、print は印刷コマンドであり、$0 は現在の行を表すので、上記コマンドの実行結果は各行をそのまま印刷することになります。 次に、標準入力 (stdin) を使用して上記の例を説明します。 $ echo 'これはテストです' | awk '{print $0}' これはテストです 上記のコードでは、print $0 は標準入力を再印刷するためのもので、これはテストです。 Awk は、スペースとタブに応じて各行を複数のフィールドに分割し、$1、$2、$3 を使用して最初のフィールド、2 番目のフィールド、3 番目のフィールドなどを表します。 $ echo 'これはテストです' | awk '{print $3}' 1つの 上記のコードでは、$3 は 3 番目のフィールド a を表し、これはテストです。 以下では、例として、/etc/passwd ファイルを demo.txt として保存します。 ルート:x:0:0:root:/root:/usr/bin/zsh デーモン:x:1:1:デーモン:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin 同期:x:4:65534:sync:/bin:/bin/sync このファイルのフィールド区切り文字はコロン (:) なので、区切り文字をコロンとして指定するには -F パラメータを使用する必要があります。次に、最初のフィールドを抽出できます。 $ awk -F ':' '{ $1 を印刷 }' demo.txt 根 デーモン ビン システム 同期 文法
変数 フィールドを表す $ + 数値に加えて、awk は他の変数もいくつか提供します。 変数 NF は現在の行にフィールドがいくつあるかを示します。したがって、$NF は最後のフィールドを表します。 $ echo 'これはテストです' | awk '{print $NF}' テスト $(NF-1) は最後から 2 番目のフィールドを表します。 $ awk -F ':' '{$1, $(NF-1) を印刷}' demo.txt ルート /ルート デーモン /usr/sbin ビン/ビン システム /dev 同期 /bin 上記のコードでは、print コマンド内のカンマは、出力時に 2 つの部分を区切るためにスペースが使用されることを示しています。 $ awk -F ':' '{print NR ") " $1}' デモ.txt 1) ルート 上記のコードでは、print コマンドで文字をそのまま出力したい場合は、文字を二重引用符で囲む必要があります。 awk のその他の組み込み変数は次のとおりです。 FILENAME: 現在のファイル名 3. 機能 Awk には、生データの処理を容易にするための組み込み関数もいくつか用意されています。 関数 toupper() は文字を大文字に変換するために使用されます。 $ awk -F ':' '{ 上限($1) を印刷 }' demo.txt 根 デーモン ビン システム 同期 上記のコードでは、出力時に最初のフィールドが大文字に変換されます。 その他、よく使われる機能は以下のとおりです。 tolower(): 文字を小文字に変換します。 awk の組み込み関数の完全なリストについては、マニュアル ページを参照してください。 IV. 条件 Awk を使用すると、出力条件を指定して、条件を満たす行のみを出力できます。 出力条件はアクションの前に記述する必要があります。 $ awk '条件アクション' ファイル名 以下の例をご覧ください。 $ awk -F ':' '/usr/ {print $1}' demo.txt 根 デーモン ビン システム 上記のコードでは、print コマンドの前に正規表現が付いており、usr を含む行のみが出力されます。 次の例では、奇数行のみ、および 3 行目以降の行のみを出力します。 # 奇数行を出力する $ awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt 根 ビン 同期 # 3行目以降を出力 $ awk -F ':' 'NR >3 {print $1}' demo.txt システム 同期 次の例では、最初のフィールドが指定された値と等しい行を出力します。 $ awk -F ':' '$1 == "root" {print $1}' demo.txt 根 $ awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txt 根 ビン 5. if文 Awk は複雑な条件を記述するための if 構造を提供します。 $ awk -F ':' '{if ($1 > "m") print $1}' demo.txt 根 システム 同期 上記のコードは、最初のフィールドの最初の文字が m より大きい行を出力します。 if 構造では else 部分も指定できます。 $ awk -F ':' '{if ($1 > "m") の場合は $1 を出力し、そうでない場合は "---" を出力します}' demo.txt 根 --- --- システム 同期 6. 参考リンク Example、Greg Grothaus による Awk チュートリアル テキスト処理における Awk コマンドの 30 の例、Mokhtar Ebrahim 要約する 上記は編集者が紹介したLinx awk入門チュートリアルです。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
>>: JSはショッピングカート内の商品の合計金額の計算を実現します
水平線<hr /> タグを使用して、現在の位置に水平の分割線を描画します。例: XML/...
Linux でパーティションのファイル システム タイプを確認する方法。パーティションのファイル シ...
序文springboot設定ファイルでは、設定ファイルの名前には独自の意味と用途があります。 dev...
この記事では、VUEの具体的なコードを共有して、下部吸引ボタンを実装する例を紹介します。具体的な内容...
次の2つのファイルを結合するには、それらを結合して1.txtに結合します。 # 1.txt ジェリー...
この記事では、シンプルなカルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹...
序文一般的な開発では、画像をディレクトリにアップロードし、ディレクトリとファイル名を連結してデータベ...
目次背景メタバースとは何ですか?成果を達成するトライアル 1: THREE.TorusGeometr...
最近、インターネットのベテランと「広告」について議論したのですが、彼から非常に興味深い意見を聞きまし...
結論:マルチスレッド環境では、スレッドの 1 つがクラッシュすると、他のスレッド (プロセス全体) ...
序文docker run がコンテナを作成して実行するときに、-p を使用してポート マッピング ル...
0. 概要Zabbix は非常に強力なオープンソースの監視ツールです。以下では、Zabbix がテー...
<br />おそらく、あなたは会社に入社したばかりで、その会社が「ユーザビリティ」に関す...
この記事の例では、ミニプログラムのカスタムタブバーコンポーネントをカプセル化するための具体的なコード...
ページを作成するときに、ページの見栄えを良くするために、背景画像を設定する必要があることがよくありま...