我希望我的Unix文件输出(在新行上有每个值输出)转换为分组行,如下所示。
说我在Unix中的输出文件如下所示:
jobname
userid
starttime
endtime
jobname2
userid
starttime
endtime
我希望输出为:
jobname1 userid starttime endtime
jobname2 userid starttime endtime
答案 0 :(得分:8)
这是一个最小的awk
解决方案:
awk 'ORS=NR%4?" ":"\n"' input.txt
jobname userid starttime endtime
jobname2 userid starttime endtime
(如果你想对齐字段,请管道到column -t
)
答案 1 :(得分:3)
这会将每四个连续行粘贴为四个制表符分隔的字段:
cat source_file | paste - - - - > destination_file
答案 2 :(得分:1)
如果您正在寻找一个shell脚本,您可以这样做,因为输出中要打印的行数似乎必须固定长度:
while read line1; do
read line2
read line3
read line4
echo $line1 $line2 $line3 $line4 >>output
done <file
答案 3 :(得分:1)
使用GNU sed:
tr '\n' ' ' < file | sed -r 's/(\w+ +){4}/&\n/g'
答案 4 :(得分:0)
有点难看,但不需要shell脚本:
cat outputfile | tr "\n" " " | sed -e 's/\W*\(\w*\) \(\w*\) \(\w*\) \(\w*\)\W*/\1 \2 \3 \4\n/g'