Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
如何替换部分标题,删除两个字符之间的bash、awk、sed_Bash_Unix_Awk_Sed - Fatal编程技术网

如何替换部分标题,删除两个字符之间的bash、awk、sed

如何替换部分标题,删除两个字符之间的bash、awk、sed,bash,unix,awk,sed,Bash,Unix,Awk,Sed,我有一个制表符分隔的文件 abc_a1.txt\tcde_b2.txt\tefgh_c11.txt\t.... 1\t2\t3\t... 我想为每个列标题去掉\u之后的任何内容。我想去 abc\tcde\tefgh\t... 1\t2\t3\t... 我该怎么做呢。尝试过,sed–i's/.*//g',它在第一次\uu 感谢您的帮助使用gnu-sed您可以使用反括号表达式: sed 's/_[^\t]*//g' file \u[^\ t]*匹配下划线,后跟零个或多个非制表符。使用gnu-s

我有一个制表符分隔的文件

abc_a1.txt\tcde_b2.txt\tefgh_c11.txt\t....
1\t2\t3\t...
我想为每个列标题去掉
\u
之后的任何内容。我想去

abc\tcde\tefgh\t...
1\t2\t3\t...
我该怎么做呢。尝试过,
sed–i's/.*//g'
,它在第一次
\uu

感谢您的帮助

使用
gnu-sed
您可以使用反括号表达式:

sed 's/_[^\t]*//g' file

\u[^\ t]*
匹配下划线,后跟零个或多个非制表符。

使用
gnu-sed
可以使用反括号表达式:

sed 's/_[^\t]*//g' file
\uu[^\ t]*
匹配下划线,后跟零个或多个非制表符。

在awk中尝试:

awk '{gsub(/_[^\\]*/,"");print}'   Input_file
试用sed:

sed 's/_[^\\]*//g'   Input_file
编辑:正如OP所说\t是输入文件中的选项卡,所以现在也添加以下解决方案

awk '{gsub(/_[^\t]*/,"");print}'  Input_file
在awk中尝试:

awk '{gsub(/_[^\\]*/,"");print}'   Input_file
试用sed:

sed 's/_[^\\]*//g'   Input_file
编辑:正如OP所说\t是输入文件中的选项卡,所以现在也添加以下解决方案

awk '{gsub(/_[^\t]*/,"");print}'  Input_file
如果你不担心最后一个字段

sed 's/_[^\t]*\t/\t/g;s/_[^\t]*$//'
否则

如果你不担心最后一个字段

sed 's/_[^\t]*\t/\t/g;s/_[^\t]*$//'

否则。

你有文字
\t
\t
是制表符吗?@anubhava,它们是制表符,不是文字。你有文字
\t
\t
是制表符吗?@anubhava,它们是制表符,不是文字。谢谢,
\t
不是文字,而是制表符。我相信你的答案也行。谢谢,
\t
不是字面意思,而是制表符。我相信你的答案也行得通。我想我把你和键入literal
\t
搞混了,但是我现在知道如果它有literal
\t
我想我把你和键入literal
\t
搞混了,但是我现在知道如果它有literal
\t
怎么处理了