如何增加文件中的数字

Nav*_* CH 7 shell numbers sed increment

我有一个日期如下的文件,假设文件名是file1.txt:

2013-12-29,1
Run Code Online (Sandbox Code Playgroud)

在这里我必须将数字增加1,所以它应该是1 + 1 = 2之类的...

2013-12-29,2 
Run Code Online (Sandbox Code Playgroud)

我尝试使用'sed'替换,但必须只使用变量.

oldnum=`cut -d ',' -f2 file1.txt`  
newnum=`expr $oldnum + 1`
sed -i 's\$oldnum\$newnum\g' file1.txt  
Run Code Online (Sandbox Code Playgroud)

但是我从sed语法中得到一个错误,有没有办法解决这个问题.提前致谢.

Wes*_*ker 12

Sed需要前倾斜线,而不是斜线.实际使用'\'时会出现多个有趣的问题,但快速修复应该是(使用双引号,如下所示):

oldnum=`cut -d ',' -f2 file1.txt`  
newnum=`expr $oldnum + 1`
sed -i "s/$oldnum\$/$newnum/g" file1.txt 
Run Code Online (Sandbox Code Playgroud)

但是,我怀疑在这种情况下sed是否真的是适合这项工作的工具.更完整的一个工具,从awkperlpython可能工作从长远来看更好.

请注意,我使用了$行尾匹配,以确保您没有将2012更换为2022,这是我认为您不想要的.


mic*_*ang 6

通常我想使用awk做这样的工作以下是代码可能工作

awk -F',' '{printf("%s\t%d\n",$1,$2+1)}' file1.txt
Run Code Online (Sandbox Code Playgroud)

  • 不起作用,缺少括号`{}`.当`awk`可以自己读取它时,你不应该把文件写入`awk`.这应该做:'awk -F,'{printf("%s,%d \n",$ 1,$ 2 + 1)}'file1.txt` (2认同)