我正在使用awk处理nroff格式的联机帮助页以提取每个命令的选项...我发现选项以\fB
开头,后跟实际选项,可能{{1}和选项参数等等......
示例:
\fP
我开始写一个awk脚本,指定\fB\-\-author\fR
......好吧,它不起作用......我试图逃避FS = "\fB"
,切换到\
但是没有不管怎样......我做错了什么?
这是我的剧本:
FS = "\\fB"
这是输入
\ fB的邻\ FP
我希望$ 2成为-o。但它只是行不通。
答案 0 :(得分:2)
看起来你可以用4个反斜杠完成这个任务:
$ echo "1\z2\z3" | awk 'BEGIN { FS = "\\\\z" } ; {print $3 $1}'
31
当bash解析它时,它应该将4个反斜杠转换为2个字面反斜杠;那么awk会将那些 2个反斜杠转换为单个字面反斜杠。
答案 1 :(得分:0)
字段分隔符FS
用于类似CSV的数据。在您的情况下,找到过滤器的选项,然后删除您不想要的部分:
/\\fB/ { ... process option ...}
答案 2 :(得分:0)
我想我记得曾经碰到这一次。
真正的问题是某些版本的awk坚持认为FS是一个单一角色。
我记得,绕过它的方法是手动将文件拉入GNU Emacs,将多字符FS编辑为一个未在文件中任何其他位置使用的字符,用适当的FS唤醒,然后手动之后修复它。
你可以使用几个sed脚本自动执行此操作,一个用于执行初始重新编码,另一个用于修复它,中间有awk步骤。