如何更换使用制表符换行符?(How to replace newlines with tab cha

2019-08-31 23:26发布

我有模式如下图所示

hi
hello
hallo
greetings
salutations
no more hello for you

我尝试使用下面的命令来替换标签的所有换行符

sed -e "s_/\n_/\t_g"

但它不工作。

可能有人请帮助? 我正在寻找在SED / AWK的解决方案。

Answer 1:

不知道你想输出

# awk -vRS="\n" -vORS="\t" '1' file
hi      hello   hallo   greetings       salutations     no more hello for you 


Answer 2:

这里tr比较好,我认为:

tr "\n" "\t" < newlines 

作为Nifle在评论所说, newlines这里是文件保持原文的名称。

因为sed是这么线为导向,这是更复杂在这样的情况下使用。



Answer 3:

sed '$!{:a;N;s/\n/\t/;ta}' file


Answer 4:

你不能一行一行地的基础替换换行符sed 。 你必须积累的线条和替换它们之间的换行。

text abc\n    <- can't replace this one

text abc\ntext def\n    <- you can replace the one after "abc" but not the one at the end

sed脚本积累的所有行并消除所有的换行,但最后:

sed -n '1{x;d};${H;x;s/\n/\t/g;p};{H}'

顺便说一句,你sed脚本sed -e "s_/\n_/\t_g"想说的“全部替换斜线,然后用斜线后面的选项卡换行”。 下划线正在对分隔符的作用s命令,以便斜杠可以更容易地使用搜索和替换字符。



Answer 5:

paste -s

-s串连所有命令行顺序每个单独输入文件的行的。 除了在每个输入文件的最后一行的每一行的换行字符被替换为制表符,除非由-d选项另有规定。



Answer 6:

你几乎有你的sed脚本,你只需将其更改为:

sed -e "s/\n/\t/g"

\足够逃生,你不需要添加_你需要添加/g末让SED知道这是脚本的最后一部分。



文章来源: How to replace newlines with tab characters?
标签: shell unix sed awk