我有这样的测试文件
fdsf fdsf fdsfds fdsf
fdsfdsfsdf fdsfsf
fsdfsdf var12=1343243432
fdsf fdsf fdsfds fdsf
fdsfsdfdsfsdf
fsdfsdf var12=13432434432
fdsf fdsf fdsfds fdsf
fsdfsdf fdsfsf var12=13443432432
现在我想 var12=\d+
用作记录分隔符。这在 awk 中是否可能
是的,但是您应该使用[0-9]
而不是\d
:
awk '1' RS="var12=[0-9]+" file
IIRC,只能GNU awk
使用多字符记录分隔符。
结果:
fdsf fdsf fdsfds fdsf
fdsfdsfsdf fdsfsf
fsdfsdf
fdsf fdsf fdsfds fdsf
fdsfsdfdsfsdf
fsdfsdf
fdsf fdsf fdsfds fdsf
fsdfsdf fdsfsf
如果您需要进一步的帮助,请发布您想要的输出。
假设Linux 上的GNU awk (aka gawk
),是的。
RS
这是 awk 的输入记录分隔符。它的默认值是一个包含单个换行符的字符串,这意味着输入记录由单行文本组成。它也可以是空字符串,在这种情况下,记录由空行分隔。如果是正则表达式,则记录由输入文本中正则表达式的匹配项分隔。
来源: 7.5.1 控制的内置变量awk
,GNU Awk 用户指南。
正如@steve 所说,\d
不在正则表达式运算符或-特定正则表达式运算gawk
符列表中,因此您需要使用括号表达式,例如[0-9]
或[[:digit:]]
代替您的\d
.
但是,您的问题尚不清楚您的意图是什么。我已经回答了你的问题,但我怀疑我已经解决了你的根本问题。另请参阅什么是 XY 问题?