awk或sed删除带有字符串和数字的模式

时间:2013-08-23 03:05:12

标签: awk

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

string1_204
string2_408
string35_592

我需要摆脱string1_,string2_,string35_等等,并添加204,408,592来获取值。 所以输出应该是1204。

我可以取出string1_和string 2_但是对于string35_592,我有5_592。 我似乎无法让命令正确地做我想做的事情。敬请任何帮助:)

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:3)

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

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

输出:

1024

说明:

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