我有一个很长的文件。文件内容如下:
myserver1
kernel_version
os
myserver2
kernel_version
os
myserver3
kernel_version
os
...
一万多个条目,每个主机3个条目。主机名、内核版本和操作系统版本。
我想要这样的输出:
myserver1, kernel_version, os
myserver2, kernel_version, os
myserver3, kernel_version, os
...
相反。那么提供此输出的最佳 awk/sed 命令是什么?
最佳答案
使用 sed:
$ sed '/^$/d;N;N;s/\n/, /g' infile
myserver1, kernel_version, os
myserver2, kernel_version, os
myserver3, kernel_version, os
工作原理如下:
/^$/d # Delete line if empty (skips rest of commands)
N # Append second line to pattern space
N # Append third line to pattern space
s/\n/, /g # Replace newlines by comma and a blank
如果您希望跳过该行的标准不是“空行”而是它的行号(4、8、12 ...),您可以替换第一个命令(这是一个 GNU 扩展):
sed '4~4d;N;N;s/\n/, /g' infile
关于linux - 使用 awk/sed 重新格式化长文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45339205/