0

私はこのファイルを持っています

マイファイル

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コマンドプロンプトでユーザーがパラメーターとして取得するシェルスクリプトでこのコードを使用するにはどうすればよいですか?

4

2 に答える 2

6

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
于 2012-10-13T08:56:34.603 に答える
0

これは、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
于 2012-10-15T16:45:46.073 に答える