・バイナリはここから
https://ja.osdn.net/projects/sfnet_ezwinports/releases/
・基本文法
awk “パターン文 { アクション文 }” 入力ファイル
awk -f スクリプトファイル
Winなので、ダブルクォーテーション囲い、文字列の場合エスケープする。
・パターン文
1.正規表現
‘/正規表現/ { アクション文 }’
1 2 3 |
@echo off gawk "/^[1-9]/ { print $0 }" "%~dpnx1" pause |
2.BEGIN-END
BEGIN { 最初の行の前の処理 }
END { 最後の行の後の処理 }
1 2 3 |
@echo off gawk "/^[1-9]/ { print $0 } BEGIN { print \"start\" } END { print \"end\" }" "%~dpnx1" pause |
3.条件式
条件を省略するとすべての行を処理
処理を省略すると条件がtrueの行が表示される{ print $0 }
0(ゼロ)と””(空文字)がfalse
条件を省略
1 2 3 |
@echo off gawk "{ print $0 }" "%~dpnx1" pause |
処理を省略
1 2 3 |
@echo off gawk "/^[1-9]/" "%~dpnx1" pause |
・組込変数
$0:レコード
$n:n番目のフィールド
FS:フィールド区切文字
NR:現在のレコード数
NF:現在のフィールド数
2番目のフィールドを出力
1 2 3 |
@echo off gawk "{ print $2 }" "%~dpnx1" pause |
・スクリプトファイルで実行する場合
1 2 3 |
@echo off gawk -f script.awk "%~dpnx1" pause |
1 2 3 4 5 6 7 8 |
BEGIN { i = 1; } /^[0-9]/ { print $0; print i "番目"; } { i++; } |
・EmEditorから実行する場合
パスを通さず直接指定している。
ツール>外部ツール>外部ツールの設定>新規作成
コマンド:G:\Dropbox\My Cloud Work\Utility\gawk 5.1\bin\gawk.exe
引数:-f “G:\Dropbox\My Cloud Work\Text\awk.txt” “$(Path)”
1 2 3 4 |
# スクリプトファイルで実行した場合 FILENAME ~ /awk.txt/ { exit } { print $2 } |
・C#から標準入出力で利用する場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
var process = new Process(); // 対象テキストをファイルで渡す場合、3つ目の引数に指定する var info = new ProcessStartInfo(@"xxx\gawk.exe",@"-f xxx.txt"); // 標準入出力リダイレクト // Write()しない場合、RedirectStandardInput不要 info.RedirectStandardOutput = true; info.RedirectStandardInput = true; info.CreateNoWindow = true; info.UseShellExecute = false; process.StartInfo = info; process.Start(); process.StandardInput.Write("hello world"); process.StandardInput.Close(); string output = process.StandardOutput.ReadToEnd(); process.StandardOutput.Close(); process.Dispose(); MessageBox.Show(output); |
・サンプル
マッチした部分を抜き出す。
1 2 3 |
match ($0, /^[0-9]\w*/) { print substr($0, RSTART, RLENGTH); } |