awk-无法指定FS
我正在用awk处理nroff格式的手册页,以提取每个命令的选项。。。我发现选项以awk-无法指定FS,awk,Awk,我正在用awk处理nroff格式的手册页,以提取每个命令的选项。。。我发现选项以\fB开头,然后是实际选项,可能还有\fP和选项参数等等 例如: \fB\-\-author\fR 我开始编写一个awk脚本,指定FS=“\fB”。。。嗯,它不起作用了。。。我试图跳出\,切换到FS=“\\fB”,但也没有成功。。。我做错了什么 这是我的剧本: BEGIN { FS = "\\f." # "\\\\f." didn't work either } { print $2 } 这是
\fB
开头,然后是实际选项,可能还有\fP
和选项参数等等
例如:
\fB\-\-author\fR
我开始编写一个awk脚本,指定FS=“\fB”
。。。嗯,它不起作用了。。。我试图跳出\
,切换到FS=“\\fB”
,但也没有成功。。。我做错了什么
这是我的剧本:
BEGIN {
FS = "\\f." # "\\\\f." didn't work either
}
{
print $2
}
这是输入
\fB-o\fP
我想要2美元的地方-o。但它就是不起作用。看起来你可以用4个反斜杠来完成这一点:
$ echo "1\z2\z3" | awk 'BEGIN { FS = "\\\\z" } ; {print $3 $1}'
31
当bash解析这个时,它应该将4个反斜杠换成2个文字反斜杠;然后,awk将把这两个反斜杠换成一个文字反斜杠。字段分隔符
FS
用于类似CSV的数据。在您的情况下,找到过滤器的选项,然后删除不需要的部件:
/\\fB/ { ... process option ...}
我记得有一次我碰到过这个 真正的问题是,awk的一些版本坚持FS是单个字符 我记得,解决方法是手动将文件拉入GNU Emacs,将多字符FS向下编辑为文件中其他地方未使用的一个字符,使用适当的FS对其进行awk,然后手动修复
你可以用两个SED脚本自动完成一个脚本,一个做初始记录,一个修复它,中间的AWK步骤。
正确,你需要从反斜杠中逃脱两次,因为引号(“”)移除一个逃逸。选择正确的行只是故事的一部分。获得有趣的领域是OP想要的。