1

我有一个包含以下内容的文件:

string1_204
string2_408
string35_592

我需要去掉 string1_、string2_、string35_ 等并添加 204,408,592 以获得一个值。所以输出应该是1204。

我可以取出 string1_ 和 string 2_ 但对于 string35_592 我有 5_592。我似乎无法获得正确的命令来做我想做的事。请任何帮助表示赞赏:)

4

2 回答 2

5

使用 awk:

awk -F_ '{s+=$2}END{print s}' your.txt 

输出:

1204

解释:

-F_    sets the field separator to _ what makes it easy to access
       the numbers later on

{
    # runs on every line of the input file
    # adds the value of the second field - the number - to s.
    # awk auto initializes s with 0 on it's first usage
    s+=$2
}
END {
    # runs after all input has been processed
    # prints the sum
    print s
}
于 2013-08-23T03:08:50.040 回答
3

如果您对 coreutils/bc 替代方案感兴趣:

<infile cut -d_ -f2 | paste -sd+ - | bc

输出:

1024

解释:

cut在下划线字符 ( -d_) 处拆分每一行并仅输出第二个字段 ( -f2)。数字列被传递到将paste它们连接在-s由加号字符 ( ) 分隔的行 ( ) 上-d+。这被传递给bc它计算和输出总和。

于 2013-08-23T10:22:10.780 回答