Linux 如何对不同长度的列使用“粘贴”命令
我有: 我想在ofile.txt中粘贴所有这三列 我试过了Linux 如何对不同长度的列使用“粘贴”命令,linux,shell,unix,sed,Linux,Shell,Unix,Sed,我有: 我想在ofile.txt中粘贴所有这三列 我试过了 file1.txt file2.txt file3.txt 8 2 2 1 2 1 8 1 0 3 3 5
file1.txt file2.txt file3.txt
8 2 2
1 2 1
8 1 0
3 3
5 3
3
4
我在ofile.txt中得到的结果:
paste file1.txt file2.txt file3.txt > ofile.txt
哪个应该来
ofile.txt:
8 2 2
1 2 1
8 1 0
3 3
5 3
3
4
当我使用制表符创建输入文件时,我可以复制您的输出。
“粘贴”也在列之间使用制表符,并按他认为应该的方式执行。 当我用
-
替换选项卡时,您会看到结果:
ofile.txt
8 2 2
1 2 1
8 1 0
3 3
5 3
3
4
想想你想要什么。如果需要正确的缩进,则需要为行数较少的文件添加带有tab的行。或者操纵结果:将3个选项卡分为4个,并将行开头的4个选项卡分为5个选项卡
# more x* | tr '\t' '-'
::::::::::::::
x1
::::::::::::::
-1a
-1b
-1c
-1d
::::::::::::::
x2
::::::::::::::
-2a
-2b
::::::::::::::
x3
::::::::::::::
-3a
-3b
-3c
-3d
-3e
-3f
-3g
# paste x? | tr '\t' '-'
-1a--2a--3a
-1b--2b--3b
-1c---3c
-1d---3d
---3e
---3f
---3g
您可以在
bash
中使用进程替换尝试此paste
命令:
sed -e 's/\t\t\t/\t\t\t\t/' -e 's/^\t\t\t\t/\t\t\t\t\t/'
pastepaste file1.txt file2.txt file3.txt
提供所需的输出。显示cat-vte
file1.txt file2.txt file3.txt`以查看输入文件中是否有任何控制字符。
paste <(sed 's/^[[:blank:]]*//' file1.txt) file2.txt file3.txt
8 2 2
1 2 1
8 8 0
3 3
5 3
3
4