用grep或sed更改值

时间:2012-11-19 17:21:50

标签: regex sed grep

我可以使用grep / sed增加txt文件中的某些数字吗?

我想找到文件中的所有数字,并将它们增加为5.这是否可以使用grep和sed或我需要为此编写应用程序?

编辑: 文件有n行以数字 - 数字开头,而不是某些文本。 喜欢电影的标题。

示例行:

34 - 36 : Some text.

4 个答案:

答案 0 :(得分:2)

您可以将perl用作:

perl -i -pe 's/(\d+)/$1+5/eg' filename

See it

答案 1 :(得分:1)

可能是awk。将记录分隔符更改为空格(假设这是您要执行的操作),然后如果记录匹配正则表达式^[0-9]*$转换为数字添加5并打印,否则打印。

这是一个非常完整的解决方案,但“作为练习”进行编码。

答案 2 :(得分:1)

我相信你应该使用awk Changing the Contents of a Field

>cat 1.txt
34 - 36 : Some text.


cat 1.txt | awk '{ $1=$1+5; $3=$3+5; print $0; }'
39 - 41 : Some text.

答案 3 :(得分:0)

这可能适合你(GNU sed& Bash):

sed 's/[0-9]\+/$((&+5))/g;s/.*/echo "&"/e'  file