以下内容应仅匹配字母,如果找到它们,则应在其周围加上括号。我不知道为什么它会把它们放在下面的数字之间。以下结果在bash脚本中。
$ echo '13123213'|sed 's/[a-z]*/(&)/g'
()1()3()1()2()3()2()1()3()
答案 0 :(得分:1)
你走了:
echo '13123213'|sed 's/[0-9]/(&)/g'
(1)(3)(1)(2)(3)(2)(1)(3)
您确实尝试匹配[a-z]
,但您没有任何字母,因此请使用[0-9]
代码
或者如果你想在字母周围加上括号:
echo '1312a32z13'|sed 's/[a-z]/(&)/g'
1312(a)32(z)13
可以使用此awk
。
echo '13123213'| awk '{gsub(/[0-9]/,"(&)")}1'
(1)(3)(1)(2)(3)(2)(1)(3)
echo '13123213'| awk '{for (i=1;i<=NF;i++) $i="("$i")"}1' FS="" OFS=""
(1)(3)(1)(2)(3)(2)(1)(3)
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed 's/[[:alpha:]]\+/(&)/g' file
或:
sed 's/[[:alpha:]]\{1,\}/(&)/g' file
或:
sed 's/[[:alpha:]][[:alpha:]]*/(&)/g' file