Bash 在awk中使用多个字符串作为分隔符
我有一个文本文件,其中记录的格式如下: A | o | BCD | o | E | o | XYZ 我想使用“| | o | |”作为分隔符来获取我的记录: 但当我使用:Bash 在awk中使用多个字符串作为分隔符,bash,awk,sed,Bash,Awk,Sed,我有一个文本文件,其中记录的格式如下: A | o | BCD | o | E | o | XYZ 我想使用“| | o | |”作为分隔符来获取我的记录: 但当我使用: awk -F'||o||' '{print $1}' 我得到以下错误: awk:正则表达式| | o | | at | o中的非法主|| 非常感谢您的帮助。您需要在正则表达式中转义文字管道 awk-F'[|][|]o[|][|]''{print$1}' 或 awk-F'[|]{2,2}o[|]{2,2}'{print$1}'
awk -F'||o||' '{print $1}'
我得到以下错误:
awk:正则表达式| | o | | at | o中的非法主||
非常感谢您的帮助。您需要在正则表达式中转义文字管道
awk-F'[|][|]o[|][|]''{print$1}'
或
awk-F'[|]{2,2}o[|]{2,2}'{print$1}'
通常的反斜杠转义在awk中是不同的,所以要使用它(至少在GNUBash上,版本4.3.42)
awk'BEGIN{FS=“\\\\\\\\\\\\\\\\\\\\\\\\”}{print$1}pipe.txt
还有使用-F
选项的丑陋语法
awk-F“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
双逃逸现象得到了很好的解释。相关:。。。相同的分隔符;)我没有得到GNU awk的错误。。因此,建议将awk版本添加到您的问题中,这些使用|o | |
作为分隔符的文件来自哪里???Luis,在我的系统中,awk-F'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'{print$1}
不起作用,但是awk-F'[\\\\\\][\\\\\\\\\\\[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'{print$1}
和awk-F'[\\\\\\\\\\\\\\\\\\\\\\\\\\\。如果你拿走第一个,我会投票支持你的解决方案。@Luis Muñoz:我有权删除你的第一个不起作用的解决方案,但我留下了第二个和第三个。谢谢。我在答案的末尾添加了更多的信息。@Luis Muñoz:Ha sido un placer。