【发布时间】:2012-04-25 00:07:13
【问题描述】:
我正在使用查找命令来查找某种格式的所有文件,该命令已经很好了。我正在将该输出通过管道传输到 awk 命令中,并且我想使用最后一个下划线作为字段分隔符。问题在于,根据文件所在的路径,事实之前可能会有一两个下划线。
find . -regex ".*prob[0-9]*_.*" | awk 'BEGIN { FS = "_.*$" } { print $1 " " $2 }'
我知道我的字段分隔符中的正则表达式有什么问题,它认为用下划线分隔,后面的任何内容,是否只指定单个字符本身。此外,我如何专门在最后一次出现的字符上使用字段分隔符。
这在某种程度上是我之前提出的一个问题的延伸: Suppress output to StdOut when piping echo
我得到的文件通常是这样的,皱纹是目录也可以有下划线: /the/directory/probXXXXX_XX
其中 X 是任意整数。
我一直在考虑的一种解决方法是在每个下划线处分开,然后打印每一列...不过我更希望它在上面的方法中工作。
【问题讨论】:
-
鉴于目前正在做的事情,您认为如何将分配给
FS修改为仅_? -
你是什么意思?我可以使用 FS = "_",但是这样会分隔一个额外的下划线并创建一个我不想要的列。我只想分隔最后一个下划线。
-
答案的其余部分见下文。