我有一个文件
had my.file
Ha1_00044012__C 1 51035805 10.35639322
Ha1_00045184__C 1 86676829 10.07929888
Ha1_00045056__C 1 150178524 19.44076068
Ha10_00000491__C 10 73473488 10.6038893
Ha10_00000577__C 10 78976728 12.45451149
Ha10_00002949__C 10 113658711 14.94370396
Ha10_00001805__C 10 220068670 10.87452401
我想从第一列中删除最后 3 个字符“__C”。我试过了
awk '{gsub(/[__c ]/,"",$1)}3'
但它会删除第一列中的所有“_”。我想要的输出应该是这样的:
head desired
Ha1_00044012 1 51035805 10.35639322
Ha1_00045184 1 86676829 10.07929888
Ha1_00045056 1 150178524 19.44076068
Ha10_00000491 10 73473488 10.6038893
Ha10_00000577 10 78976728 12.45451149
Ha10_00002949 10 113658711 14.94370396
Ha10_00001805 10 220068670 10.87452401
周围的方括号
[__c ]
使它成为一个集合而不是一个字符序列。使用gsub
, 这将使它匹配(并替换)每个_
,c
(小写,注)和空格字符$1
您似乎想要的是替换
__C
您可以使用的序列的单个实例(大写)sub(/__C/,"",$1)
如果您需要它不区分大小写,您可以使用
/__[Cc]/
如果文本足够严格以至于
__C
您只想删除它,您也可以很容易地使用sed
:可以通过以下方式进行进一步清理
sed
:这将删除从每行开头开始的所有前导空格,直到
H
inHa1
。您可以使用以下方式执行此操作:
ncr = 它是可变的。在这里,您可以指定要从特定列中删除多少个字符。