队
我有一个包含数据的文件,如下所示。
[root@ip-12-32-8-15 ~]# cat dbbackup
(555)555-1212
(555)555-1213
First: (555) Second: 555- Third: 1212
First: (555) Second: 555- Third: 1213
我正在使用它不起作用。
sed -n -e 's/\([0-9]+)\)\([0-9]+-\)\([0-9]+\)/First: \1 Second: \2 Third: \3/p' dbbackup
请让我知道如何实现上述输出。
答案 0 :(得分:1)
在GNU awk(FIELDWIDTHS
)中,没有正则表达式:
$ awk 'BEGIN{FIELDWIDTHS="5 4 4"}{print "First:",$1,"Second:",$2,"Third:",$3}' file
First: (555) Second: 555- Third: 1212
First: (555) Second: 555- Third: 1213
sed中的另一个:
$ sed 's/^/First: /1;s/./& Second: /12;s/./& Third: /25' file
First: (555) Second: 555- Third: 1212
First: (555) Second: 555- Third: 1213
答案 1 :(得分:0)
您忘记了第一个字段前的左括号。但这并不是它不起作用的原因
它不起作用,因为sed
不知道+
。请改用*
:
sed -n -e 's/\(([0-9]*)\)\([0-9]*-\)\([0-9]*\)/First: \1 Second: \2 Third: \3/p'
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed -r 's/$/\nfirst:second:third:fourth:\n/;:a;s/^([(0-9]+[)-]?)([^\n]*\n)([^:]*:)(.*)/\2\4 \3 \1/;ta;s/\n.*\n //' file
此方法将字符串前面的数字与追加到行尾的字符串匹配,然后将它们附加到引入行的末尾。最终没有更多数字要删除,然后删除引入的换行符/最终空格,留下所需的字符串。
N.B。可以附加其他字符串以用于更多数字。