awk - 无法指定FS

时间:2009-12-03 11:56:40

标签: awk

我正在使用awk处理nroff格式的联机帮助页以提取每个命令的选项...我发现选项以\fB开头,后跟实际选项,可能{{1}和选项参数等等......

示例:

\fP

我开始写一个awk脚本,指定\fB\-\-author\fR ......好吧,它不起作用......我试图逃避FS = "\fB",切换到\但是没有不管怎样......我做错了什么?


这是我的剧本:

FS = "\\fB"

这是输入

  

\ fB的邻\ FP

我希望$ 2成为-o。但它只是行不通。

3 个答案:

答案 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步骤。