我想在文件中打印所选行的总和。
例如,一个文件,其后面的行以'sss'开头:
sss
nnnn
rrrrr
ttt
eeee
gg
h
l
k
ooo
ppp
我想打印2,6,10行长度之和的值。 对于此输入文件:4 + 2 + 3和输出:9。
答案 0 :(得分:5)
使用awk:
awk 'NR==2||NR==6||NR==10{sum+=length($0)}END{print sum}' file.txt
NR
是当前行号||
是 OR 声明{}
的内容是条件 {}
中的内容是操作 sum+=length($0)
使用当前行的长度END
块在所有行读取完毕后执行答案 1 :(得分:0)
echo "$(($(sed -n 's/ *$//;2p;6p;10p' file.txt | wc -c)-3))"
这将通过sed
打印出行列表中的总字符数(2p;6p;10p;
,您可以将其更改为您想要的任何内容),使用wc
计算每行中的字符数,我们取消3,因为你可以在脚本中构建字符串的换行符,只需确保将数字3调整为打印出来的行数。
答案 2 :(得分:0)
在BASH中(作为一个具有可读性的续行的衬里,在子shell中执行)
( sum=0; n=0; lines=126; while read -r line || [ -n "$line" ]; do \
((n++)); [[ "$lines" =~ "$n" ]] && ((sum+=${#line})); done <dat/lineln.dat; \
echo -e "\n sum of lines '$lines': $sum\n" )
<强>输入强>
$ cat dat/lineln.dat
sss
nnnn
rrrrr
ttt
eeee
gg
h
l
k
ooo
ppp
<强>输出:强>
sum of lines '126': 9