如何操作txt文件中只有一列的组件
How to manipulate components of just one column in a txt file
在一个文件夹中,我有一些包含 3 列的 txt 文件。我想知道是否可以将一个字符(比如 L)附加到第三列的所有组件。我设法在 matlab 中做到了,但是对于那些少于 3 位数字的数字,比如 81 ,它显示为 L 81
但是,L
之后的 space 对我来说是不需要的。我想知道在 UNIX/shell 中是否有办法做到这一点?这些文件看起来像
0 1400000 165
1400000 1700000 336
1700000 2500000 216
2500000 3000000 228
3000000 3900000 366
3900000 4100000 108
4100000 4900000 250
4900000 5100000 81
我希望他们成为
0 1400000 L165
1400000 1700000 L336
1700000 2500000 L216
2500000 3000000 L228
3000000 3900000 L366
3900000 4100000 L108
4100000 4900000 L250
4900000 5100000 L81
使用sed
在第二个space之后添加L
:
$ sed -r 's/(.* .* )/L/' file
0 1400000 L165
1400000 1700000 L336
1700000 2500000 L216
2500000 3000000 L228
3000000 3900000 L366
3900000 4100000 L108
4100000 4900000 L250
4900000 5100000 L81
将结果保存到同一文件使用 -i
:
$ sed -i -r 's/(.* .* )/L/' file
您可以更简单地使用 sed
,将第二个 space 替换为 space,然后是 L
sed 's/ / L/2' yourFile
在一个文件夹中,我有一些包含 3 列的 txt 文件。我想知道是否可以将一个字符(比如 L)附加到第三列的所有组件。我设法在 matlab 中做到了,但是对于那些少于 3 位数字的数字,比如 81 ,它显示为 L 81
但是,L
之后的 space 对我来说是不需要的。我想知道在 UNIX/shell 中是否有办法做到这一点?这些文件看起来像
0 1400000 165
1400000 1700000 336
1700000 2500000 216
2500000 3000000 228
3000000 3900000 366
3900000 4100000 108
4100000 4900000 250
4900000 5100000 81
我希望他们成为
0 1400000 L165
1400000 1700000 L336
1700000 2500000 L216
2500000 3000000 L228
3000000 3900000 L366
3900000 4100000 L108
4100000 4900000 L250
4900000 5100000 L81
使用sed
在第二个space之后添加L
:
$ sed -r 's/(.* .* )/L/' file
0 1400000 L165
1400000 1700000 L336
1700000 2500000 L216
2500000 3000000 L228
3000000 3900000 L366
3900000 4100000 L108
4100000 4900000 L250
4900000 5100000 L81
将结果保存到同一文件使用 -i
:
$ sed -i -r 's/(.* .* )/L/' file
您可以更简单地使用 sed
,将第二个 space 替换为 space,然后是 L
sed 's/ / L/2' yourFile