Chinaunix
标题:
awk中替换并保留正则匹配到的特征串
[打印本页]
作者:
hujysh
时间:
2017-11-17 10:57
标题:
awk中替换并保留正则匹配到的特征串
用sed可以实现
sed "s/abc\([A-Z]\)/XXX\1/" file
找到abc后跟大写字母,将这样的abc替换成XXX
awk中有gsub可以作替换,但没找到类似上面替换后保留作为特征串的大写字母的功能。
有谁知道awk中怎么实现吗?
作者:
wh7211
时间:
2017-11-17 11:08
本帖最后由 wh7211 于 2017-11-17 11:18 编辑
回复
1#
hujysh
echo "123abcF456"|awk 'match($0,"(^[0-9]+)[a-z]+(F.*$)",t){print t[1]"XXX"t[2]}'
echo "123abcF456"|awk '$0=gensub("(^[0-9]+)[a-z]+(F.*$)","\\1XXX\\2","g")'
复制代码
输出:
123XXXF456
作者:
jason680
时间:
2017-11-17 12:33
回复
1#
hujysh
$ echo '123abcABC123abcABC789' | perl -pe '{s/abc([A-Z])/XXX$1/}'
123
XXX
ABC123abcABC789
$ echo '123abcABC123abcABC789' | perl -pe '{s/abc([A-Z])/XXX$1/
g
}'
123
XXX
ABC123
XXX
ABC789
$ echo '123abcABC123abcABC789' | awk '{$0=
gensub
("abc([A-Z])","XXX\\1",
1
,$0)}1'
123
XXX
ABC123abcABC789
$ echo '123abcABC123abcABC789' | awk '{$0=
gensub
("abc([A-Z])","XXX\\1",
"g"
,$0)}1'
123
XXX
ABC123
XXX
ABC789
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2