我有一个文本文件,其中记录格式如下:
A||o||BCD||o||E||o||XYZ
我想使用“||o||”作为分隔符来获取我的记录:
但是当我使用:
awk -F'||o||' '{print $1}'
我遇到了以下错误:
非常感谢任何帮助。awk: 在 |o|| 处,正则表达式中出现非法的主元素 ||o||
您需要在正则表达式中转义管道符号
awk -F'[|][|]o[|][|]' '{print $1}'
或者
awk -F'[|]{2,2}o[|]{2,2}' '{print $1}'
在awk中,通常的反斜杠转义不同,因此要使用它(至少在GNU bash版本4.3.42上)
awk 'BEGIN{FS="\\|\\|o\\|\\|"} {print $1}' pipe.txt
还有这个丑陋的语法,使用-F
选项
awk -F "\\\|\\\|o\\\|\\\|" '{print $1}' pipe.txt
双重转义在这里有很好的解释。
awk -F'\|\|\o\|\|' '{print $1}'
不起作用,但是 awk -F'[|][|]o[|][|]' '{print $1}'
和 awk -F'[|]{2,2}o[|]{2,2}' '{print $1}'
可以。如果你去掉第一个,我会给你的解决方案点赞。 - Pierre François
||o||
作为分隔符的文件是从哪里来的???我一直在这个论坛上看到它们被提到。 - Ed Morton