パターンに一致する行をスキップし、条件に一致する行を削除します。

パターンに一致する行をスキップし、条件に一致する行を削除します。

次の形式のファイルがあります。

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

「Q」または「L」で始まる行をスキップし、2番目の列の値が10より大きい行を削除し、コンテンツ全体を新しいファイルに保存する必要があります。出力ファイルの例:

Output file 1
    Q
    L
    A D
    1 10
    4 5
    5 9 

Output file 2
1
4
5

パスワード:

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

答え1

簡単に使えます正規表現文字 A、L、または Q と条件で始まる行をフィルタリングします。awk次のような場合に適しています。

awk '($0 ~ /^[AQL]/ || $2 < 11) { print $0 }' < input.file > output.file1
awk '($0 ~ /^[^AQL]/ && $2 < 11) { print $1 }' < input.file > output.file2

答え2

次のコマンドを使用してテストすると、うまく動作します。

注文する

awk '$1 !~ "Q|L" && $2 <11{print $1}' filename

出力

awk '$1 !~ "Q|L" && $2 <11{print $1}' filename
1
4
5

関連情報