我有这样的字符串

BRADI5G20430|BRADI5G20430.1||1

如何用制表符(“\t”)替换条形(单个和多个)?
我尝试了这个但是没有工作
sed 's/\|+/\t/g'

我也想在bash脚本中包含这一行。

最佳答案

您需要转义+

$ sed 's/|\+/\t/g' file
BRADI5G20430    BRADI5G20430.1  1

或者您可以使用sed的-r选项,但是这次,+将为“一个或多个”,并且您需要转义“|”因为在正则表达式中,它意味着交替。
$ sed -r 's/\|+/\t/g' file
BRADI5G20430    BRADI5G20430.1  1

或使用awk,将字段分隔符设置为“|”然后将输出字段分隔符OFS设置为tab \t
例如
$ awk -F"|" '{$1=$1}1' OFS="\t" file
BRADI5G20430    BRADI5G20430.1          1

这将每个选项卡替换为“|”。如果要替换所有“|”一个标签
$ awk '{gsub(/\|+/,"\t")}1' file
BRADI5G20430    BRADI5G20430.1  1

08-26 12:43