Awk 在unix中提取和截断字符

Awk 在unix中提取和截断字符,awk,extract,Awk,Extract,我正在awk脚本中使用-cut-c12-16命令,但该命令不起作用,或者可能是我写得不正确。12到16之间的字符是可变的,我想通过GNU awk将它们从以999999开头的文件中去掉 $ echo 'YYYYYY99999920120519' | awk '/^YYYYYY999999/{$0=gensub(/^(.{12}).{4}/,"\\1","g")}1' YYYYYY9999990519 使用awk: $ awk '/^YYYYYY/ { print substr($0,1,12)

我正在awk脚本中使用
-cut-c12-16
命令,但该命令不起作用,或者可能是我写得不正确。12到16之间的字符是可变的,我想通过GNU awk将它们从以
999999

开头的文件中去掉

$ echo 'YYYYYY99999920120519' | awk '/^YYYYYY999999/{$0=gensub(/^(.{12}).{4}/,"\\1","g")}1'
YYYYYY9999990519

使用
awk

$ awk '/^YYYYYY/ { print substr($0,1,12) substr($0,17); next }1' file
YYYYYY9999990519
更新:
您还需要包括正在尝试的实际命令。所说的
cut
不是
awk
命令。它是一个独立运行的程序
awk
有一个
substr
函数,可能用于类似的目的。您正在尝试将
yyyyyyy
添加到每一行以及(之后)以
yyyyyyyyyyyy9999
开头的任何行(因此它们最初以
999999
开头)你想删除12-16个字符之间的任何字符(新位置)?只需更改开始模式。你能在问题中发布脚本吗?是的,我无法格式化你评论中的文本。
$ cat file
YYYYYY651006178045E46178D
YYYYYY6510617ESTN5258534
YYYYYY999999621409112ET0
YYYYYY99999949234091EA201
$ awk '/^YYYYYY999999/ { print substr($0,1,12) substr($0,17); next }1' file
YYYYYY651006178045E46178D
YYYYYY6510617ESTN5258534
YYYYYY99999909112ET0
YYYYYY9999994091EA201