Chinaunix
标题:
sed匹配的字符能否数学计算
[打印本页]
作者:
REFRESHMM
时间:
2021-08-19 11:14
标题:
sed匹配的字符能否数学计算
a文本里所以数字+3怎么写
作者:
cjaizss
时间:
2021-08-20 17:08
vim下十分容易
:%s/[0-9]\+/\=submatch(0)+3/g
sed不直接支持数学运算,但是可以用e,不过我不喜欢,
既然不包含e也是图灵完备,当然可以,写一个吧
以下只针对非负整数
#!/bin/sed -nrf
:a
s/(^|\n)([^0-9\n]+)([0-9][^\n]*)$/\1\2\n\3/
s/(^|\n)([0-9]+)([^0-9\n][^\n]*)$/\1\2\n\3/
ta
s/^/\n\n/
:b
s/\n\n([^0-9\n]+)/\1\n/
tb
/\n\n[0-9]/ {
s/(\n\n[0-9]*)0($|\n)/\13\2/
td
s/(\n\n[0-9]*)1($|\n)/\14\2/
td
s/(\n\n[0-9]*)2($|\n)/\15\2/
td
s/(\n\n[0-9]*)3($|\n)/\16\2/
td
s/(\n\n[0-9]*)4($|\n)/\17\2/
td
s/(\n\n[0-9]*)5($|\n)/\18\2/
td
s/(\n\n[0-9]*)6($|\n)/\19\2/
td
s/(\n\n[0-9]*)7($|\n)/\1x0\2/
s/(\n\n[0-9]*)8($|\n)/\1x1\2/
s/(\n\n[0-9]*)9($|\n)/\1x2\2/
tc
:c
s/(\n\n)x/\11/
s/(\n\n[0-9]*)0x/\11/
s/(\n\n[0-9]*)1x/\12/
s/(\n\n[0-9]*)2x/\13/
s/(\n\n[0-9]*)3x/\14/
s/(\n\n[0-9]*)4x/\15/
s/(\n\n[0-9]*)5x/\16/
s/(\n\n[0-9]*)6x/\17/
s/(\n\n[0-9]*)7x/\18/
s/(\n\n[0-9]*)8x/\19/
td
s/(\n\n[0-9]*)9x/\1x0/
tc
:d
s/\n\n([0-9]+)/\1\n/
}
tb
s/\n//g
p
复制代码
作者:
REFRESHMM
时间:
2021-08-22 20:11
这么麻烦 最喜欢sed可以读写源文件 awk和perl也好
作者:
REFRESHMM
时间:
2021-08-22 20:15
js:fileStr.replace(/\d+/g,r=>r-0+3)
作者:
cjaizss
时间:
2021-08-23 16:20
本帖最后由 cjaizss 于 2021-08-23 16:25 编辑
如果用e,以上代码会简单很多
#!/bin/sed -nrf
:a
s/(^|\n)([^0-9\n]+)([^\n]*)$/\1echo '\2'\n\3/
s/(^|\n)([0-9]+)([^\n]*)$/\1expr 3 + \2\n\3/
ta
e
s/\n//g
p
复制代码
作者:
baby_神
时间:
2021-08-30 16:19
回复
2#
cjaizss
大佬能解释下不,看的一脸懵逼
作者:
legs
时间:
2021-09-18 14:24
perl -pe's#\d+#$&+3#ge'
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2