我在这些词之间有标签(五个):
cat dog
我想要这个输出:
猫 狗
我试过这个:sed 's/\t/\n/g; /^$/d' pets
输出与以下相同sed 's/\t/\n/g' pets:
猫 狗
我不得不执行 sed 两次才能得到我想要的。这就像sed 's/\t/\n/g' pets>temp后sed '/^$/d' temp
有没有办法用一个命令获得所需的输出?
继续我的评论。有问题sed 's/\t/\n/g的是你将取代各 '\t'一个'\n'。您想用单个换行符替换一系列制表符。为此,您需要:
sed 's/\t\t*/\n/g'
Run Code Online (Sandbox Code Playgroud)
或者,如果您喜欢明确地将'\t'in括起来[ ]也可以。
该表达式'\t'匹配单个选项卡,后'\t\t*'跟它匹配一个选项卡和零个或多个选项卡,然后将序列替换为单个'\n',从而产生所需的输出:
cat
dog
Run Code Online (Sandbox Code Playgroud)
最后的g(全局)只会用一个换行符替换每个序列,例如
"cat dog fish"
Run Code Online (Sandbox Code Playgroud)
(由制表符分隔),变成
cat
dog
fish
Run Code Online (Sandbox Code Playgroud)
如果您有任何问题,请告诉我。