如何将多行文本转换为一行?

joh*_*ohn 13 bash text-processing sed

我正在尝试将生成的密钥生成一行的txt文件.例:

<----- key start ----->
lkdjasdjskdjaskdjasdkj
skdhfjlkdfjlkdsfjsdlfk
kldshfjlsdhjfksdhfksdj
jdhsfkjsdhfksdjfhskdfh
jhdfkjsdhfkjsdhfkjsdhf
<----- key stop ----->
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像:

lkdjasdjskdjaskdjasdkjskdhfjlkdfjlkdsfjsdlfkkldshfjlsdhjfksdhfksdjjdhsfkjsdhfksdjfhskdfhjhdfkjsdhfkjsdhfkjsdhf
Run Code Online (Sandbox Code Playgroud)

注意我也想要行<----- key start -----><----- key stop ----->删除.我怎样才能做到这一点?这会完成sed吗?

Axe*_*sbo 12

要将多行输出转换为单个空格分隔的行,请使用

tr '\n' ' ' < key.txt
Run Code Online (Sandbox Code Playgroud)

我知道这不能回答详细的问题。但这是标题的一种可能答案。我需要这个答案,我的谷歌搜索找到了这个问题。


Jav*_*ñez 7

tail -n +2 key.txt | head -n -1 | tr -d '\n'
Run Code Online (Sandbox Code Playgroud)

tail 用于删除第一行,head 用于删除最后一行,tr 用于删除换行符。


Cos*_*sta 5

如果您正在寻找一个sed中想要的所有东西,那么我有这个...

sed -n '1h;2,$H;${g;s/\n//g;s/<----- key \(start\|stop\) ----->//g;p}' key.txt

但这并不是很容易理解:)如果您不介意传递几个命令,则可以在其余的答案中使用管道的grep,tr,sed等建议。


Mil*_*ric 1

在 vim 中,它只是 :%s/^M//

我一直使用它来从行中生成逗号分隔的列表。对于 sed 或 awk,请通过此链接查看许多解决方案:

http://www.unix.com/shell-programming-scripting/35107-remove-line-break.html

例子:

粘贴 -s -d',' tmpfile | sed 's/,/, /g'