在 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="[_.]"
,那么我可以打印出$3
,这适用于第一条记录但不适用于第二和第三条。我该如何捕获序列号和.txt之间的所有内容?
我正在编辑需要更改的旧版AWK代码。一旦正确捕获了这个字段,awk进程就会继续生成额外的输出。
sed -E 's/^([^_]*_){2}//; s/\.[^.]*$//' file
。 - M. Nejat Aydin