如何添加:到文件中的一行

时间:2015-03-27 01:37:00

标签: bash

我有一个包含多行的文件,但我想添加:将这些部分分开。例如,我有......

Last Name First Name User ID email
Smith John 123456789 johnsmith@gmail.com

我试图只添加:到第一行隔开四类信息,如

Last Name : First Name : User ID : email
Smith John 123456789 johnsmith@gmail.com

我知道你可以只是vi并编辑文件,但这太容易了。使用一行代码有更有效的方法吗?

1 个答案:

答案 0 :(得分:1)

要将冒号添加到第一行,只添加第一行:

$ sed -r '1 s/([^ ]+ ){2}/&: /g' file
Last Name : First Name : User ID : email
Smith John 123456789 johnsmith@gmail.com

要进行这些更改并保存文件,请使用sed的-i选项

sed -ir '1 s/([^ ]+ ){2}/&: /g' file

如何运作

  • -r

    这会选择扩展的正则表达式语法

  • 1 s/([^ ]+ ){2}/&: /g

    开头的1选择第1行。替换命令的格式为s/old/new/,其中old这里有两个单词,后面的空格为([^ ]+ ){2}new这里匹配的是&,后跟冒号和空格。最后的g告诉sed在线上重复这样做。

Mac OSX或其他BSD系统

使用BSD sed,尝试:

sed -i '' -E '1 s/([^ ][^ ]* ){2}/&: /g' file