Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在awk中使用多个字符串作为分隔符_Bash_Awk_Sed - Fatal编程技术网

Bash 在awk中使用多个字符串作为分隔符

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}'

我有一个文本文件,其中记录的格式如下:

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中是不同的,所以要使用它(至少在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。