更新行号末尾的数字

时间:2016-01-10 21:20:46

标签: bash file sed

我尝试在每行的末尾为dir中的每个文件添加一个数字并更新它。 让我们说:第一个文件从1开始,第二个文件从2开始,依此类推。

我使用的脚本如下:

var reqs = [];
var skipArray = ['123', '456']; // input values that equal no charge

$('#myForm').submit(function(e){
    $('#myForm select').each(function (key, elm) {
        $elm = $(elm);

          if ($.inArray($elm.val(), skipArray) !== -1) {
              // No charge.
          } else {
               reqs.append(onFormSubmit(data, function (result) {
                   console.log(result);
               }));
          }
    });

    e.preventDefault();
});



var onFormSubmit = function(data, callback){
    // ajax call
}

我强硬的命令就是这样:在文件$ filename的每行末尾添加一个空格和一个数字。每次使用条件#!/bin/bash n=1 for filename in $HOME/path/to/direc/* do sed -i 's/$/ $(($n + 1))/g' $filename done 更新该数字。 相反,它会在每个文件的每一行的末尾打印出来:" $(($ n + 1))" ... '空间'在开始时没关系,但不是数字。

非常感谢。

1 个答案:

答案 0 :(得分:3)

Bash不会用单引号插入字符串。请改用双引号。

此外,不需要/g,因为$每行只能匹配一次。

要更新变量值,您需要为其指定新值

$(( n = n + 1 ))

或更短

$(( n += 1 ))

或者更短的

$(( n++ ))