同じコマンドを複数回実行するさまざまな種類のループについて学習しましょう。 awk スクリプトには、BEGIN 関数と END 関数 (どちらもオプション)、および毎回実行されるようにユーザーが記述した関数という 3 つの主要部分があります。ある意味では、awk の本体はループです。関数内のコマンドはレコードごとに 1 回実行されるためです。ただし、レコードに対して複数のコマンドを実行したい場合には、ループを使用する必要があります。 ループには多くの種類があり、それぞれ異なるシナリオに適しています。 whileループ while ループは式をテストし、式が true の場合にコマンドを実行します。式が false になると、ループは中断されます。 #!/bin/awk -f 始める { # 1から10までループする 私=1; (i <= 10) の間 { i を印刷します。「2 乗は "、i*i; i = i+1; } 出口; } この単純な例では、awk は変数 i に格納された整数値の 2 乗を出力します。 while (i <= 10) ステートメントは、i の値が 10 以下の間のみループを実行するように awk に指示します。ループが最後に実行された後(i の値が 10)、ループは終了します。 do-while ループ do-while ループは、キーワード do に続くコマンドを実行します。各反復の最後にテスト式がチェックされ、ループを終了するかどうかが決定されます。コマンドは、テスト式が true を返す間(つまり、ループを終了する条件にまだ達していない間)のみ繰り返し実行されます。テスト式が false を返す場合、ループを終了する条件に達したため、ループは終了します。 #!/usr/bin/awk -f 始める { 私=2; する { i を印刷します。「2 乗は "、i*i; 私 = 私 + 1 } 一方 (i < 10) 出口; } forループ awk には 2 種類の for ループがあります。 for ループは変数を初期化し、テスト式をチェックし、変数を増分し、式が true と評価される限りループを続行します。 #!/bin/awk -f 始める { (i=1; i <= 10; i++) の場合 { i を印刷します。「2 乗は "、i*i; } 出口; } 別の for ループは、連続したインデックスを持つ配列変数を設定し、各インデックスに対して一連のコマンドを実行します。つまり、配列を使用して各コマンドの実行結果を「収集」します。 この例では、Unix コマンド uniq の簡略化されたバージョンを実装します。一連の文字列を配列 a のキーとして追加し、同じキーが再び出現したときにキー値を増分することで、文字列が出現する回数を調べることができます (uniq の --count オプションと同様)。配列のすべてのキーを印刷すると、文字列のすべての出現が取得されます。 デモ ファイル colours.txt (前の記事のファイル) を例に挙げます。
以下は、uniq -c の単純な awk バージョンです。 #!/usr/bin/awk -f NR != 1 { a[$2]++ } 終わり { for (キー入力) { [キー]を印刷する " " キー } } サンプル データ ファイルの 3 番目の列は、最初の列にリストされているエントリの数です。配列と for ループを使用して、3 番目の列のエントリを色ごとにカウントできます。 #!/usr/bin/awk -f 始める { FS=""; OFS="\t"; print("color\tsum"); } NR != 1 { [$2]+=$3; } 終わり { (b が a の場合) { b, a[b] を印刷する } } ファイルを処理する前に、BEFORE 関数 (1 回だけ実行される) で列ヘッダーを印刷する必要があることもわかります。 サイクル ループはあらゆるプログラミング言語の重要な部分であり、awk も例外ではありません。ループを使用すると、awk スクリプトの実行方法、カウントする情報、データの処理方法を制御できます。次の記事では、switch、continue、next ステートメントについて説明します。 ps: awk-for ループの簡単な使い方 文章: [root@VM_0_84_centos ~]# cat sshd.txt 1 2 3 4 5 6 7 8 9 上記のテキストを印刷するためにループします forループの固定形式 i=1 は i の初期変数を設定します i<=NF i 変数は NF 変数の値以下です (行あたりのフィールド数) i++ は i が +1 増加することを意味します。 [root@VM_0_84_centos ~]# cat sshd.txt |awk '{for(i=1;i<=NF;i++){print $i}}' 1 2 3 4 5 6 7 8 9 要約する 上記は、awk でのループの使用についての紹介です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: Vue エクスポート Excel 機能の全プロセス記録
>>: win10 での mysql 8.0.16 winx64 インストールの最新グラフィック チュートリアル
序文ご存知のとおり、HTML5 はインターネット コミュニティ全体に標準を提供する組織である Wor...
目次導入1. MySQLデータベースの全体的なアーキテクチャSQL インターフェースパーサーオプティ...
背景前景要素から特定の色を継承する影の効果を作成する方法を知りたいと思ったことはありませんか?方法に...
この記事の例では、Vueスライダー検証の実装を共有しています。コードは次のとおりです。 <テン...
HTML を使用して動的な Web クロックを作成します。コードは次のとおりです。 <!DOC...
CentOS7 64でのMySQL5.6.40のインストール手順1) 以前にインストールしたMySQ...
最近、製品部門のユーザーエクスペリエンスチームの学生は、アライアンス環境における広告に関する一連の研...
目次前面に書かれた複数のストレージマウント方法1.バインドマウント2. 巻数3.tmpfsマウントス...
MySQL への接続時に発生する 1449 および 1045 例外の解決方法 mysql 1449:...
序文ルーティングの管理は、ほとんどのシングルページ アプリケーションにとって不可欠な機能です。 Vu...
目次1. プラグイン2. 幕間3. 実装4. 検証機能1. プラグインまず、私たちが選んだプラグイン...
この記事では、jQueryプラグインを使用してマインスイーパゲームを実装する2番目の記事を参考までに...
目次複数テーブル結合の基本構文クロス結合と直積現象クロスコネクトデカルト積現象内部結合外部結合左外部...
この記事では、Navicatを使用してcsvデータをmysqlにインポートする方法を参考までに紹介し...
目次Docker-Maven-プラグインMavenプラグインの自動デプロイメント手順1. ホストマシ...