我有一个文件,其内容如下所示
1234 Name Surname Address
我应该有这样的输出文件
(123) Name Surname Address
我正在使用Linux sed
命令
sed -e 's/^\([0-9]\{3\}\)\./&/g' file_name
但是我的命令根本没有改变输入文件。
请帮忙,
答案 0 :(得分:1)
您不需要两个捕获组,只需要一个就足够了,也不需要捕获数字后剩余的字符,
$ sed 's/\([0-9]\{3\}\)[0-9]/(\1)/g' file
(123) Name Surname Adress
通过GNU sed,
$ sed -r 's/([0-9]{3})[0-9]/(\1)/g' file
(123) Name Surname Adress
<强>解释强>
([0-9]{3}) # Captures first three numbers.
[0-9] # Matches the last number.
(\1) # In the replacement part, it replaces the four numbers by `(captured group)`
答案 1 :(得分:1)
您可以使用awk
awk '{$1="("substr($1,1,3)")"}1' file
(123) Name Surname Address
它将括号添加到字段#1
的前三个字符并打印出来
它比sed
:)
答案 2 :(得分:0)
您可以使用此sed
,
sed -e 's/^\([0-9]\{3\}\).\(.*\)/(\1)\2/g' yourfile
<强>解释强>
^\([0-9]\{3\}\)
- 前3位数(第1组)
.
- 匹配任何一个字符
\(.*\)
- 剩余内容(第2组)
(\1)
- 使用\1
和来访问第一个群组
在它周围加上括号。
\2
- 访问第二组