我需要转置一个文件。
输入文件:
1/1/1111
1
2
3
4
2/2/2222
5
6
7
8
输出:
1/1/1111 1 2 3 4
2/2/2222 5 6 7 8
答案1
xargs 怎么样
xargs -n5 < input_file
或 awk
awk '{a=(NR%6==0)?"":a$0" ";if(NR%6==5)print a}' inp
答案2
在perl
perl -lp00e 's/\n/ /g' your_file
解释
l
:从正在处理的当前记录中删除输入记录分隔符,并在每个打印行后添加当前输出记录分隔符(默认为换行符)。-p
:对文件逐条记录进行操作,处理后打印当前记录。-00
:表示记录分隔符为两个或多个连续的换行符-e
:执行以下字符串作为代码,同时将默认变量 ($_
) 设置为当前从文件中读取的记录。s/\n/ /g
:用空格替换当前记录中遇到的每个换行符(g
修饰符确保替换是“全局”的)。
答案3
和sed
:
$ sed -e '
:1
$!N
/\n$/{
P
d
}
s/\n/ /
t1
' <file
答案4
它们的格式是否相同,即每个块 6 行?如果是这样,paste
最简单(即 6 个破折号):
paste - - - - - - < file
如果您需要空格而不是制表符,请添加-d' '