Shell 删除列中的特定字符
我有一个文件:Shell 删除列中的特定字符,shell,Shell,我有一个文件: col1 col2 col3 118566815 comp120568_c0_seq1_xn1_una_478__176 176 118588302 100034943_0__140 140 118575711 100079758_0__55 55 118545625 10009810_0__57 57 我要做的是删除第2列中_uu之后的字符,以获得所需的输出: col1 col2 col3 118566815 com
col1 col2 col3
118566815 comp120568_c0_seq1_xn1_una_478__176 176
118588302 100034943_0__140 140
118575711 100079758_0__55 55
118545625 10009810_0__57 57
我要做的是删除第2列中_uu之后的字符,以获得所需的输出:
col1 col2 col3
118566815 comp120568_c0_seq1_xn1_una_478 176
118588302 100034943_0 140
118575711 100079758_0 55
118545625 10009810_0 57
有什么建议吗
awk '{split($2,a,/__/);$2=a[1]}1' input
输出:
col1 col2 col3
118566815 comp120568_c0_seq1_xn1_una_478 176
118588302 100034943_0 140
118575711 100079758_0 55
118545625 10009810_0 57
在问问题之前一定要搜索网站:)你可以找到类似的问题
输出:
col1 col2 col3
118566815 comp120568_c0_seq1_xn1_una_478 176
118588302 100034943_0 140
118575711 100079758_0 55
118545625 10009810_0 57
在提问之前一定要搜索网站:)你可以找到一个类似的问题。如前所述,用一个双下划线分隔最后一组要删除的数字,你也可以用
sed
简单地完成:
$ sed 's/__[^ \t]*//' file
col1 col2 col3
118566815 comp120568_c0_seq1_xn1_una_478 176
118588302 100034943_0 140
118575711 100079758_0 55
118545625 10009810_0 57
解释
sed's/find/replace/”
是通用的sed
替换\uuu[^\ t]*
find-两个下划线和后面的所有字符不是空格
或选项卡
无需替换
注意:这仅适用于分隔最后一组数字的双下划线。如前所述,如果使用双下划线分隔要删除的最后一组数字,您也可以使用
sed
简单地执行此操作:
$ sed 's/__[^ \t]*//' file
col1 col2 col3
118566815 comp120568_c0_seq1_xn1_una_478 176
118588302 100034943_0 140
118575711 100079758_0 55
118545625 10009810_0 57
解释
sed's/find/replace/”
是通用的sed
替换\uuu[^\ t]*
find-两个下划线和后面的所有字符不是空格
或选项卡
无需替换
awk '{sub(/0__.*/,"0",$2)sub(/__176/," ")}1' file
col1 col2 col3
118566815 comp120568_c0_seq1_xn1_una_478 176
118588302 100034943_0 140
118575711 100079758_0 55
118545625 10009810_0 57
说明:
第一个子项删除双下划线和以下字符
在零点前面,保持零点完好无损。为了让它工作,我必须
指出所涉及的字段
第二个子段从下划线开始,但这里我们留下了一个空格
awk '{sub(/0__.*/,"0",$2)sub(/__176/," ")}1' file
col1 col2 col3
118566815 comp120568_c0_seq1_xn1_una_478 176
118588302 100034943_0 140
118575711 100079758_0 55
118545625 10009810_0 57
嗨,欢迎来到stack overflow。有关如何提问和相应更新问题的更多详细信息,请参阅链接。您好,欢迎使用stack overflow。有关如何提问和相应更新问题的更多详细信息,请参阅该链接。不要回答问题,然后暗示它是重复的。不要回答问题,然后暗示它是重复的。是否要用一些解释来补充您的“仅代码”答案?是否要补充您的“仅代码”答案有什么解释吗?