我有一个包含多行的文件,但我想添加:将这些部分分开。例如,我有......
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并编辑文件,但这太容易了。使用一行代码有更有效的方法吗?
答案 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在线上重复这样做。
使用BSD sed,尝试:
sed -i '' -E '1 s/([^ ][^ ]* ){2}/&: /g' file