我有一个文本文件,其中的记录格式如下:
一个|| ||öBCD || ||öË|| ||ÒXYZ
我想用'|| o ||'作为获取我的记录的分隔符:
但是当我使用时:
awk -F'||o||' '{print $1}'
我收到以下错误:
awk:正则表达式中的非法主要内容|| o ||在| o ||
任何帮助都将受到高度赞赏。
答案 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。