我的文件格式如下:
Qil
Lop
A D E
a 1 10
b 2 21
c 3 22
d 4 5
3 5 9
我需要跳过以模式'Qil'或'Lop'或'ADE'开头的行,并删除第三列的值大于10的行,并将整个内容保存在2个不同的文件中,格式如下所示下面。 输出文件示例:
Output file 1
Qil
Lop
A D E
a 1 10
d 4 5
3 5 9
Output file 2
a
d
3
我的代码:
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
答案 0 :(得分:3)
请您尝试以下。
awk '
/^Qil$|^Lop$|^A D E$/{
val=(val?val ORS:"")$0
next
}
$3<=10{
if(!flag){
print val > "file1"
flag=1
}
print > "file1"
if(!a[$1]++){
print $1> "file2"
}
}' Input_file
这将根据OP的要求创建2个名为file1
和file2
的输出文件。
答案 1 :(得分:2)
这可以在单个awk
中完成:
awk '$1 !~ /^[QLA]/ && $2 <= 10' file
1 10
4 5
5 9
如果您只想打印第一列,请使用:
awk '$1 !~ /^[QLA]/ && $2 <= 10 { print $1 }' file
1
4
5