fwa*_*ter 36 bash sed text-files
使用简单的bash脚本,我生成一个包含许多行的文本文件,如下所示:
192.168.1.1
hostname1
192.168.1.2
hostname2
192.168.1.3
hostname3
Run Code Online (Sandbox Code Playgroud)
现在我想重新格式化这个文件,看起来像这样:
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
Run Code Online (Sandbox Code Playgroud)
我将如何以这种方式重新格式化?也许sed吧?
Tim*_*Tim 44
$ sed '$!N;s/\n/ /' infile
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
Run Code Online (Sandbox Code Playgroud)
Juk*_*nen 35
这是一个仅限shell的替代方案:
while read first; do read second; echo "$first $second"; done
Run Code Online (Sandbox Code Playgroud)
rob*_*rob 28
我喜欢这个解决方案的简单性
cat infile | paste -sd ' \n'
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
Run Code Online (Sandbox Code Playgroud)
或者用逗号分隔而不是空格分隔
cat infile | paste -sd ',\n'
Run Code Online (Sandbox Code Playgroud)
如果您的输入文件有第三行,如时间戳
192.168.1.1
hostname1
14423289909
192.168.1.2
hostname2
14423289910
192.168.1.3
hostname3
14423289911
Run Code Online (Sandbox Code Playgroud)
然后唯一的变化是在分隔符列表中添加另一个空格
cat infile | paste -sd ' \n'
192.168.1.1 hostname1 14423289909
192.168.1.2 hostname2 14423289910
192.168.1.3 hostname3 14423289911
Run Code Online (Sandbox Code Playgroud)