我有一个制表符分隔文件。
abc_a1.txt\tcde_b2.txt\tefgh_c11.txt\t....
1\t2\t3\t...
我想在_
后为每个列标题删除任何内容。我想得到
abc\tcde\tefgh\t...
1\t2\t3\t...
我该怎么做。尝试sed –i ‘s/_.*//g’
并在第一次_
之后删除所有内容
谢谢你的帮助
答案 0 :(得分:3)
使用gnu sed
您可以使用否定括号表达式:
sed 's/_[^\t]*//g' file
_[^\t]*
匹配下划线,后跟零个或多个非制表符。
答案 1 :(得分:1)
尝试使用awk:
awk '{gsub(/_[^\\]*/,"");print}' Input_file
尝试使用sed:
sed 's/_[^\\]*//g' Input_file
编辑:正如OP所说,\ t是输入文件中的TAB,所以现在也添加以下解决方案。
awk '{gsub(/_[^\t]*/,"");print}' Input_file
答案 2 :(得分:0)
sed 's/_[^\t]*\t/\t/g'
如果你不担心最后一个字段。
sed 's/_[^\t]*\t/\t/g;s/_[^\t]*$//'
否则。