私はawkコマンドをbashスクリプトを使ってループしようとしていますが、awkコマンドの一重引用符内に変数を含めるのは苦労しています。私はawkでこれを完全にやっているはずだと思っていますが、今はbashにもっと気楽になります。Bashでawkコマンドを使用する
#!/bin/bash
index="1"
while [ $index -le 13 ]
do
awk "'"/^$index/ {print}"'" text.txt
done
私はawkコマンドをbashスクリプトを使ってループしようとしていますが、awkコマンドの一重引用符内に変数を含めるのは苦労しています。私はawkでこれを完全にやっているはずだと思っていますが、今はbashにもっと気楽になります。Bashでawkコマンドを使用する
#!/bin/bash
index="1"
while [ $index -le 13 ]
do
awk "'"/^$index/ {print}"'" text.txt
done
awk '/'"$index"'/' text.txt
# A lil play with the script part where you split the awk command
# and sandwich the bash variable in between using double quotes
# Note awk prints by default, so idiomatic awk omits the '{print}' too.
は、代わりにgrep
grep "$index" text.txt # Mind the double quotes
よう
を使用する注意ください必要があります:あなたはindex=1
にindex="1"
を変更することができよう-le
は、数字を比較するために使用されます。
''/'"$ index"'/''これは悪い習慣です。代わりに' -v varname = "somevalue" 'を使ってください –
は、標準的なアプローチを使用し - awk
の-v
オプション変数を渡す/設定するには:ここで
awk -v idx="$index" '$0 ~ "^"idx' text.txt
を私はシェル変数$index
の値を持つものとして、変数idx
を設定しています。 awk
の中では、を変数awk
として使用しました。
$0 ~ "^"idx
は、変数idx
に含まれるレコードが(^
)で始まる場合に一致します。その場合は、レコードを印刷します。
なぜ 'grep"^$ index "'だけではないのですか?この目的のためにawkを使うのが最上位です... – John3136