如何使用Linux逐行读取文件并在最后添加每行“1”?

时间:2013-10-04 15:41:29

标签: linux shell

我有一个txt文件(大小从10M到1G),如:

1 2
2 3
4 5
5 6
7 6
1 9
...

我需要进入

1 2 1
2 3 1
4 5 1
5 6 1
7 6 1
1 9 1
...

我应该使用什么命令?这需要多久?我正在使用Mac。我想它和Linux一样吗?

非常感谢!

3 个答案:

答案 0 :(得分:2)

使用awk

$ awk '$0=$0" 1"' file
1 2 1
2 3 1
4 5 1
5 6 1
7 6 1
1 9 1

它将" 1"添加到$0,其中包含完整的一行。然后它会打印每一项,因为默认的awk操作是{print $0}

使用sed

$ sed 's/$/ 1/' file
1 2 1
2 3 1
4 5 1
5 6 1
7 6 1
1 9 1

它会将$(行尾)替换为" 1",以便最后将" 1"附加到每一行。

  

需要多长时间?

应该很快。要量化它,请在命令前附加time

$ time awk ...

答案 1 :(得分:2)

使用sed,用附加文本替换每行的结尾:

sed 's/$/ 1/' file

如果您需要将修改保存回原始文件,请使用

sed -i 's/$/ 1/' file

答案 2 :(得分:1)

awk '{print $0,1}' file

会这样做。