小编Luc*_*a L的帖子

awk 命令:如果行不以字符开头,则删除前行的新行

尝试使用 awk 命令来实现此规则:如果行不以“O|”开头 或“A|” 或“S|” 我想删除前一行的新行

我在输入中有这个文件(input.txt)

O|field1|field2
O|field1|
field2
A|field1|
field2
S|field1|
field2
O|field1|field2
O|field1|field2
O|field1|
field2
A|field1|
field2
S|field1|
field2
O|field1|field2
Run Code Online (Sandbox Code Playgroud)

我想要这个输出

O|field1|field2
O|field1|field2
A|field1|field2
S|field1|field2
O|field1|field2
O|field1|field2
O|field1|field2
A|field1|field2
S|field1|field2
O|field1|field2
Run Code Online (Sandbox Code Playgroud)

执行这段代码

awk '/^O\|/ || /^A\|/ || /^S\|/ {printf "%s", $0; next} 1 {print}' input.txt > output.txt

它返回

O|field1|field2O|field1|field2
A|field1|field2
S|field1|field2
O|field1|field2O|field1|field2O|field1|field2
A|field1|field2
S|field1|field2
O|field1|field2
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

unix string awk data-manipulation

7
推荐指数
1
解决办法
449
查看次数

标签 统计

awk ×1

data-manipulation ×1

string ×1

unix ×1