我正在使用find命令查找某种格式的所有文件,该命令一直很黄金。我将输出汇总到一个awk命令,我想使用最后一个下划线作为字段分隔符。问题在于,根据文件所在的路径,在事实之前可能会有一个或两个下划线。
find . -regex ".*prob[0-9]*_.*" | awk 'BEGIN { FS = "_.*$" } { print $1 " " $2 }'
我在字段分隔符中得到了正则表达式的错误,它认为在下划线和后面的内容之间分开,是否仅指定单个字符本身。此外,如何在最后一次出现的字符上专门使用字段分隔符。
这有点是我之前提出的问题的延伸: Suppress output to StdOut when piping echo
我得到的文件通常是这样的,皱纹是目录也可以有一个下划线: / /目录/ probXXXXX_XX
其中X是任何整数。
我一直在考虑的一个解决方法是在每个下划线上分离,然后打印每一列......我宁愿让它在上面的方法中工作。
答案 0 :(得分:3)
awk
的一个不明显的技巧是$
是一个运算符;您可以将它与变量甚至表达式一起使用,尤其是涉及预定义变量NF
的表达式:$NF
获取最后一个字段,$(NF - 1)
第二个字段。