我有以下格式的文件:
Q
L
A D
1 10
2 21
3 22
4 5
5 9
我需要跳过以“Q”或“L”开头的行,并删除第二列值大于 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