Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
awk通过删除模式来过滤文件中的行_Awk - Fatal编程技术网

awk通过删除模式来过滤文件中的行

awk通过删除模式来过滤文件中的行,awk,Awk,尝试使用awk删除IonCode\u 4位数字(始终为4位可能不同)并保留文件扩展名。下面的方法是最好的吗?谢谢:) 文件 1112233 ID_1234_000000-Control_z_zzzz_zz_zz_zz_zz_zz_zzz_zz-zzzz-zzz-zzz_zzzz_zzzz_zzz_zzz_zzz_zzz_zzz.txt 1112231 ID_1234_000000-Control_z_zzzz_zz_zz_zz_zz_zz_zzz_zz-zzzz-zzz-zzz_zzzz_z

尝试使用
awk
删除
IonCode\u 4位数字(始终为4位可能不同)并保留文件扩展名。下面的方法是最好的吗?谢谢:)

文件

1112233  ID_1234_000000-Control_z_zzzz_zz_zz_zz_zz_zz_zzz_zz-zzzz-zzz-zzz_zzzz_zzzz_zzz_zzz_zzz_zzz_zzz.txt
1112231  ID_1234_000000-Control_z_zzzz_zz_zz_zz_zz_zz_zzz_zz-zzzz-zzz-zzz_zzzz_zzzz_zzz_zzz_zzz_zzz_zzz.txt
awk

awk '/_tn_/ {next} gsub ("^.*/|_.*$|IonCode_...._", "", $2)'f
当前

1112233  000000-Control
1112231  000000-Control  
所需的

1112233  000000-Control.txt
1112231  000000-Control.txt

你能试试下面的吗。这是我所能想到的最简单的方法,虽然我们也可以通过提及字段的数量来实现,但这更像是数字的硬编码,所以我在这里采用了这种方法

awk '
{ 
  sub(/[^_]*_/,"",$2) 
  sub(/[^_]*_/,"",$2)
  sub(/_.*/,".txt")
}
1
' Input_file
使用
sed

$ sed -E 's/ID_[0-9]{4}_([^_]+).*(\..*)/\1\2/' file

1112233  000000-Control.txt
1112231  000000-Control.txt

按1+空格或下划线分割记录,因此第四个字段将是您感兴趣的部分

awk -F '[[:space:]]+|_' '!/_tn_/{print $1,$4".txt"}' file

输出中缺少
.txt
,看起来与当前相同。谢谢:)。@justagy,谢谢你让我知道现在是午夜,我正在手机上写代码:)不管怎样,我现在修好了,让我知道它现在怎么样了?你发布的脚本对你发布的示例输入没有任何意义<代码>/\u tn./{next}
不会起任何作用,甚至不清楚您希望的
“^.*/|.*$| IonCode....
会匹配什么。所以不,我不得不说这不是最好的方法。您的描述中是否有
IonCode
,示例中是否有
ID
?如果是这样的话,它是否总是那样,或者它是否可能不是
ID
?很抱歉,它总是
ID\u 4数字(每次数字都会不同)。tn的
tn
在某些行中不是全部,因此我将其包括在内以防万一。谢谢:)。