【发布时间】:2020-11-12 04:03:11
【问题描述】:
要在 AWK 中处理的记录有以下可能的格式:
foobar是定长,serialno是变长,我要抓取的字段可能包含零个或多个下划线。
foobar_823932230_processname.txt
foobar_82393280_process_name.txt
foobar_8239330_foo_process_name.txt
期望的输出
processname
process_name
foo_process_name
如果我使用FS="[_.]",那么我可以使用print $3,它适用于第一条记录,但不适用于第二条和第三条。
如何捕获序列号和 .txt 之间的所有内容?
我正在编辑需要更改的旧版 AWK 代码。一旦我正确捕获了这个字段,awk 进程就会继续生成额外的输出。
【问题讨论】:
-
使用 GNU sed 的单行代码:
sed -E 's/^([^_]*_){2}//; s/\.[^.]*$//' file