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

时间:2018-02-22 15:54:18

标签: bash awk sed

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

一个|| ||öBCD || ||öË|| ||ÒXYZ

我想用'|| o ||'作为获取我的记录的分隔符:

但是当我使用时:

awk -F'||o||' '{print $1}'

我收到以下错误:

  

awk:正则表达式中的非法主要内容|| o ||在| o ||

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

你需要在正则表达式中转义文字管道

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

双重逃脱很好地解释了here