输入:
ID Name NUMBER
1ABC234)234-2345,
2CBF23588900,
3knl334235354,
4gkmnk436563654,
期望的输出:
*ID Name NUMBER ID Name NUMBER ID Name NUMBER*
LINE--1 1ABC234)234-2345,2CBF23588900,3knl334235354,
LINE--2 4gkmn436563654,5JNKN53546536,6jknk5643545645,
LINE--3 7........,8..........,9............,
LINE--4 10.........,11.......,12...........
我尝试使用这个命令,但不幸的是它把所有内容都变成了一行
tr -d '\n'<sample.txt
但我需要使用 unix 命令生成与上面所说的完全相同的文件。
答案1
假设您想要合并这些行,每个新行都包含输入文件中的三行,并且您希望保留相同的标题:
$ ( head -n 1 file; sed '1d' file | paste -d '\0' - - - ) >newfile
$ cat newfile
ID Name NUMBER
1ABC234)234-2345,2CBF23588900,3knl334235354,
4gkmnk436563654,line5,line6,
line7,line8,line9,
我使用的输入文件是
ID Name NUMBER
1ABC234)234-2345,
2CBF23588900,
3knl334235354,
4gkmnk436563654,
line5,
line6,
line7,
line8,
line9,
该head
命令仅输出文件的标头,而sed
andpaste
管道将剩余的行以三组为一组进行分配,而不插入任何分隔符。head
然后,管道和管道的输出将被重定向到一个新文件。
如果您需要提到的特定标头,只需将完整head
命令替换为echo 'insert header text here'
.
如果您需要每行等,请传递throughLINE--1
的结果:paste
awk '{ print "LINE--" NR, $0 }'
$ ( head -n 1 file; sed '1d' file | paste -d '\0' - - - | awk '{ print "LINE--" NR, $0 }') >newfile
$ cat newfile
ID Name NUMBER
LINE--1 1ABC234)234-2345,2CBF23588900,3knl334235354,
LINE--2 4gkmnk436563654,line5,line6,
LINE--3 line7,line8,