![bash/sed/awk/etc 删除每个其他换行符](https://linux22.com/image/580206/bash%2Fsed%2Fawk%2Fetc%20%E5%88%A0%E9%99%A4%E6%AF%8F%E4%B8%AA%E5%85%B6%E4%BB%96%E6%8D%A2%E8%A1%8C%E7%AC%A6.png)
bash 命令输出以下内容:
Runtime Name: vmhba2:C0:T3:L14
Group State: active
Runtime Name: vmhba3:C0:T0:L14
Group State: active unoptimized
Runtime Name: vmhba2:C0:T1:L14
Group State: active unoptimized
Runtime Name: vmhba3:C0:T3:L14
Group State: active
Runtime Name: vmhba2:C0:T2:L14
Group State: active
我想将它通过管道传输到某个东西以使其看起来像这样:
Runtime Name: vmhba2:C0:T1:L14 Group State: active
Runtime Name: vmhba3:C0:T3:L14 Group State: active unoptimized
Runtime Name: vmhba2:C0:T2:L14 Group State: active
[...]
即删除每个其他换行符
我试过了... |tr "\nGroup" " "
,但它删除了所有换行符,还吃掉了一些其他字母。谢谢
答案1
现在无法测试,但是
... | paste - -
应该这样做
答案2
答案3
如果要使用sed
,则没有必要将整个文件读入内存。您可以像这样合并每隔一行:
sed 'N;s/\n/ /' inputfile
使用任何你喜欢的字符代替空格。
以下是使用 awk 的另一种方法:
awk '{printf "%s", $0; if (getline) print " " $0; else printf "\n"}' inputfile
处理if/else
文件中有奇数行的情况。如果没有它,奇数行将被打印两次。否则,为了进行比较,您可以执行以下操作:
awk '{printf "%s", $0; getline; print " " $0}'
答案4
这在 Linux 上对我有用:
... | tr "\\n" " "
这将替换换行符的空格;你必须转义换行符以使事情正常工作。