用一个简单的bash脚本,我产生了许多线条像这样的文本文件:
192.168.1.1
hostname1
192.168.1.2
hostname2
192.168.1.3
hostname3
现在我要重新格式化这个文件,所以它看起来是这样的:
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
我将如何重新格式化这种方式? 也许sed
?
$ sed '$!N;s/\n/ /' infile
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
这里有一个唯一的壳选择:
while read first; do read second; echo "$first $second"; done
我喜欢这个解决方案的简单
cat infile | paste -sd ' \n'
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
或使其逗号分隔,而不是用空格分开
cat infile | paste -sd ',\n'
如果你的输入文件有一个三线像时间戳
192.168.1.1
hostname1
14423289909
192.168.1.2
hostname2
14423289910
192.168.1.3
hostname3
14423289911
那么,唯一的变化是在添加另一个空间的分隔符列表
cat infile | paste -sd ' \n'
192.168.1.1 hostname1 14423289909
192.168.1.2 hostname2 14423289910
192.168.1.3 hostname3 14423289911