我正在尝试查看是否可以实现查找/替换并在几行中增加一个整数值。为了解释,我有以下内容:
var accounts = _context.AccountUser
.Include(o => o.Account)
.Where(o => o.UserId == userId || o.Account.OwnerId == userId)
.GroupBy(o => o.Account).Select(og => og.First())
.OrderByDescending(o => o.LastAccessed)
.Select(o => o.Account);
我只想替换&sr=1240000000000&type=game&scoreA=x&scoreB=y&
&sr=1150000000000&type=game&scoreB=x&scoreB=y&
&sr=1270000000000&type=game&scoreC=x&scoreB=y&
&sr=1010000000000&type=game&scoreD=x&scoreB=y&
之后直到... sr=
之后的数字,例如,以粗体显示:
&sr = 1240000000000 &type = game&scoreA = x&scoreB = y&
所有要替换的数字都将由&
替换为每个后续的数字...
所以理想情况下,当我按如下方式使用脚本时(采用2个args,首先是要替换为的值,然后是输入文件):
./ script.sh 1500000000000 file.txt
应将所有内容替换为:
10000
我整理了一个python脚本来实现此目的,但想知道是否有人可以在1-3线性脚本中建议我这样做,也许使用AWK / SED。我的python脚本有点长。
答案 0 :(得分:1)
您不需要bash脚本,awk可以自行处理
awk -v num=1500000000000 '{num += 10000; sub(/^&sr=[0-9]+/, "\\&sr=" num)}1' file > tmpfile
mv tmpfile file
答案 1 :(得分:0)
您可以使用此awk
:
awk -v n='10000' -v s='1500000000000' 'sub("sr=[0-9]+&", "sr=" (s+i+n) "\\&"){
i+=n} 1' file
&sr=1500000010000&type=game&scoreA=x&scoreB=y&
&sr=1500000020000&type=game&scoreB=x&scoreB=y&
&sr=1500000030000&type=game&scoreC=x&scoreB=y&
&sr=1500000040000&type=game&scoreD=x&scoreB=y&