使用gsub正则表达式的awk子字符串

使用gsub正则表达式的awk子字符串,awk,Awk,我觉得要求很简单 输入字符串格式: DTC_SubrProfile_20141205230707.unl 所需输出格式: SubrProfile 也就是说,应从输入字符串中删除“DTC_”“_20141205230707.unl” 使用awk gsub是否有可能实现这一目标?通过sed $ echo 'DTC_SubrProfile_20141205230707.unl' | sed 's/^[^_]*_\|_.*//g' SubrProfile 通过awk $ echo 'DTC_Sub

我觉得要求很简单

输入字符串格式:

DTC_SubrProfile_20141205230707.unl
所需输出格式:

SubrProfile
也就是说,应从输入字符串中删除“DTC_”“_20141205230707.unl”

使用awk gsub是否有可能实现这一目标?

通过sed

$ echo 'DTC_SubrProfile_20141205230707.unl' | sed 's/^[^_]*_\|_.*//g'
SubrProfile
通过awk

$ echo 'DTC_SubrProfile_20141205230707.unl' | awk '{gsub(/^[^_]*_|_.*/,"")}1'
SubrProfile
上面的命令将删除从开始到第一个下划线的所有字符,然后从
\uu
到剩余字符串的最后一个字符

$ echo 'DTC_SubrProfile_20141205230707.unl' | awk -F'_' '{print $2}'
SubrProfile
上面的awk将根据输入字段分隔符
\uucode>

按cut打印第二列

echo "DTC_SubrProfile_20141205230707.unl"|cut -d _ -f2

是的,有可能。此特定情况的要求非常简单,但您需要明确一般模式是什么,例如“提取第一个和第二个之间的部分”。如果你认为它很简单,你自己试过什么吗?请通过编辑来更新你的问题,而不是使用你收到的答案下面的注释。为什么要使用gsub来提取这样的字段?我想op想使用gsub。@Tomfenich,我有一个格式为“SubrProfile”、“CustProfile”的主文件等等。每当新文件出现如“DTC_SubrProfile_201401010000000.unl”、“DTN_SubrProfile_201401010000000.unl”之类的情况时,“我需要匹配所有新文件是否与主文件的模式匹配。1)“我的车无法启动,我如何启动它?”2)“跳启动它”3)“谢谢,但它实际上是马”。唉…@EdMorton是的,我知道这个问题没有被问清楚。我也同意汤姆的看法。没有那么多时间来修理这件事。对不起,伙计们。希望你的专业知识能帮助我解决未来的问题。再次感谢。