由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Linux版 - 请教:如何用sed来改变文件中的数字
相关主题
比较两个文件,把相同的行删除请教sort
[请教]文件输入 (转载)sed 和 bash script 求助
弱问:如何copy目录下的所有文件到另外一个目录下?script question
How to find and delete all hard links to a file (ZZ)linux如何生成可执行文件?
gvim diff question如何对linux文件的内容进行比对?
问个关于user/group的粗浅问题系统启动rc文件的问题
比较二进制文件求教怎样把scp下载的文件on-the-fly打包?
怎样保证隐私?please help: using 'cat' to merge large text files in linux
相关话题的讨论汇总
话题: sed话题: step话题: 字符串话题: file%话题: 数字
进入Linux版参与讨论
1 (共1页)
b*****d
发帖数: 24
1
我有很多个(几百个)文本文件file1,file2,...filem,每个文件中都有100个这样的
字符串,'step n',n是一个占用8个字符的整数,具体数值不确定,该字符串在所在行
的开头。
我现在需要做这样处理,把文件filem中的每个'step n' 字符串的数字n都替换为数字n
+m*100。我想写shell script来完成,不知道怎么实现,请高手指教。我试了:
sed 's/^step\(.\{8\}\)/step$(\1+500)'
但是不起作用。关键是我只不知道怎么把\1得到的字符串转化为整数,在做计算,不知
道sed有没有这样的功能。
Thx!
i*****f
发帖数: 578
2
The following python code should do:
#!/usr/bin/env python
m = 200
for i in range(1, m+1):
b1 = open("file%d"%i).readlines()
b2 = []
for line in b1:
n = int(line.split()[1])
b2.append("step %d" % n+i*100)
open("file%d_new"%i, "w").writelines(b2)
Ugly, but should work. I don't test it though. This can also be done by sed+
sh or awk, but I'm not familiar with the latter.

字n

【在 b*****d 的大作中提到】
: 我有很多个(几百个)文本文件file1,file2,...filem,每个文件中都有100个这样的
: 字符串,'step n',n是一个占用8个字符的整数,具体数值不确定,该字符串在所在行
: 的开头。
: 我现在需要做这样处理,把文件filem中的每个'step n' 字符串的数字n都替换为数字n
: +m*100。我想写shell script来完成,不知道怎么实现,请高手指教。我试了:
: sed 's/^step\(.\{8\}\)/step$(\1+500)'
: 但是不起作用。关键是我只不知道怎么把\1得到的字符串转化为整数,在做计算,不知
: 道sed有没有这样的功能。
: Thx!

o**n
发帖数: 1249
3
I like python over shell script :)

【在 i*****f 的大作中提到】
: The following python code should do:
: #!/usr/bin/env python
: m = 200
: for i in range(1, m+1):
: b1 = open("file%d"%i).readlines()
: b2 = []
: for line in b1:
: n = int(line.split()[1])
: b2.append("step %d" % n+i*100)
: open("file%d_new"%i, "w").writelines(b2)

S***w
发帖数: 1014
4


【在 i*****f 的大作中提到】
: The following python code should do:
: #!/usr/bin/env python
: m = 200
: for i in range(1, m+1):
: b1 = open("file%d"%i).readlines()
: b2 = []
: for line in b1:
: n = int(line.split()[1])
: b2.append("step %d" % n+i*100)
: open("file%d_new"%i, "w").writelines(b2)

E*V
发帖数: 17544
5
用sed应该可以实现吧?

【在 i*****f 的大作中提到】
: The following python code should do:
: #!/usr/bin/env python
: m = 200
: for i in range(1, m+1):
: b1 = open("file%d"%i).readlines()
: b2 = []
: for line in b1:
: n = int(line.split()[1])
: b2.append("step %d" % n+i*100)
: open("file%d_new"%i, "w").writelines(b2)

b*****d
发帖数: 24
6
Thanks

【在 i*****f 的大作中提到】
: The following python code should do:
: #!/usr/bin/env python
: m = 200
: for i in range(1, m+1):
: b1 = open("file%d"%i).readlines()
: b2 = []
: for line in b1:
: n = int(line.split()[1])
: b2.append("step %d" % n+i*100)
: open("file%d_new"%i, "w").writelines(b2)

h**u
发帖数: 19
7
Try this:
cat file100|perl -pe 's/^step (\d+)/step .($1+100)/e;'
1 (共1页)
进入Linux版参与讨论
相关主题
please help: using 'cat' to merge large text files in linuxgvim diff question
perl能不能一次把一个str中的a替换成x,b替换成y?问个关于user/group的粗浅问题
matlab quiver is really ugly比较二进制文件
国内的博客网站哪个最好?怎样保证隐私?
比较两个文件,把相同的行删除请教sort
[请教]文件输入 (转载)sed 和 bash script 求助
弱问:如何copy目录下的所有文件到另外一个目录下?script question
How to find and delete all hard links to a file (ZZ)linux如何生成可执行文件?
相关话题的讨论汇总
话题: sed话题: step话题: 字符串话题: file%话题: 数字