2つのファイルを生成すると、予期しないトークン「完了」の近くに構文エラーが発生しました。

2つのファイルを生成すると、予期しないトークン「完了」の近くに構文エラーが発生しました。

次のコードを使用して2つの出力ファイル(input1、input2など)を取得しようとすると、次の構文エラーが発生します。

test.txt   
Q
L
A D
1 10
2 21
3 22
4 5
5 9

while read -r line;  if [[ $line == "A" ]] ||[[ $line == "Q" ]]||[[ $line == "L" ]] ; then awk '$2 < "11" { print $0 }' input1.txt; awk '$2 < "11" { print $1 }' input2.txt; done > test.txt

input1.txt
Q
L
A D
1 10
4 5
5 9
input2.txt
1 
4 
5 

答え1

@steeldriver さんの修正に基づいて、1 つのエントリが追加されました。ただ機能ではない構文の場合

while read -r line; do      #missing `do`
    if [[ $line == "A" ]] ||[[ $line == "Q" ]]||[[ $line == "L" ]] ; then 
        awk '$2 < "11" { print $0 }' input1.txt
    fi     # the missing fi
    awk '$2 < "11" { print $1 }' input2.txt
done < test.txt     # correct the redirection

さんの投稿を見れば、あなたが望むことは成し遂げられるようです

awk ' NF > 1 && ($2*1) < 11 && ($2*1) > 0 {print $1} ' test.txt

そして

awk ' $1 ~ /^[QLA]/ || ( ($2+0) < 11 && ($2+0) >0 ) {print $0} ' test.txt

awk$ 2にアルファベット文字が含まれている場合、$ 2の算術チェックは次のように解決されます。0

関連情報