我正在尝试解析一个文件,无论出于何种原因,字符串“&($)”作为记录分隔符,“(@)$”作为字段分隔符。我无法通过在 BEGIN block 中将它们指定为 RS 和 FS 来解析文件。我正在使用 gnu awk 3.1.7,它提示说存在语法错误,但找不到如何转义美元符号(假设这是它不喜欢的)。
$ awk 'BEGIN{FS="(@)$" RS="&($)"} {} END{print NR}' some-file.txt
awk: BEGIN{FS="(@)$" RS="&($)"} {} END{print NR}
awk: ^ syntax error
感谢专家的帮助。
谢谢, 克
最佳答案
你需要在正则表达式中转义那些具有特殊含义的字符。
kent$ cat f
foo(@)$bar(@)$blah&($)foo2(@)$bar2(@)$blah2
kent$ awk 'BEGIN{FS="\\(@\\)\\$";RS="&\\(\\$\\)"}{print NR,NF}' f
1 3
2 3
关于记录分隔符中的 awk 和美元符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20667022/