我有一个包含以下内容的文件:
string1_204
string2_408
string35_592
我需要去掉 string1_、string2_、string35_ 等并添加 204,408,592 以获得一个值。所以输出应该是1204。
我可以取出 string1_ 和 string 2_ 但对于 string35_592 我有 5_592。我似乎无法获得正确的命令来做我想做的事。请任何帮助表示赞赏:)
我有一个包含以下内容的文件:
string1_204
string2_408
string35_592
我需要去掉 string1_、string2_、string35_ 等并添加 204,408,592 以获得一个值。所以输出应该是1204。
我可以取出 string1_ 和 string 2_ 但对于 string35_592 我有 5_592。我似乎无法获得正确的命令来做我想做的事。请任何帮助表示赞赏:)
使用 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
}
如果您对 coreutils/bc 替代方案感兴趣:
<infile cut -d_ -f2 | paste -sd+ - | bc
输出:
1024
cut
在下划线字符 ( -d_
) 处拆分每一行并仅输出第二个字段 ( -f2
)。数字列被传递到将paste
它们连接在-s
由加号字符 ( ) 分隔的行 ( ) 上-d+
。这被传递给bc
它计算和输出总和。