私はこのファイルを持っています
マイファイル
a b c d e 1
b c s d e 1
a b d e f 2
d f g h j 2
awk 'if $6==$variable {print @0}' myfile
$variable
コマンドプロンプトでユーザーがパラメーターとして取得するシェルスクリプトでこのコードを使用するにはどうすればよいですか?
awk
の-v
フラグを使用できます。また、awk
デフォルトで印刷されるため、たとえば次のように試すことができます。
variable=1
awk -v var=$variable '$6 == var' file.txt
結果:
a b c d e 1
b c s d e 1
編集:
コマンドは基本的に同じで、シェルに組み込まれています。このように複数の引数を持つシェルスクリプトで使用できますscript.sh 2 j
の内容script.sh
:
command=$(awk -v var_one=$1 -v var_two=$2 '$6 == var_one && $5 == var_two' file.txt)
echo -e "$command"
結果:
d f g h j 2
これは、comp.unix.shell FAQ (http://cfajohnson.com/shell/cus-faq-2.html#Q24) の質問 24 ですが、最も一般的に使用される代替手段で、2 つの選択肢から選択する最も一般的な理由は次のとおりです。 :
-v var=value '<script>' file1 file2
if you want the variable to be populated in the BEGIN section
また:
'<script>' file1 var=value file2
if you do not want the variable to be populated in the BEGIN section and/or need to change the variables value between files