我想打印文件中所選行的總和。使用shell腳本查找所選行的長度總和?
例如,具有如下的文件開始符合「SSS」:
sss
nnnn
rrrrr
ttt
eeee
gg
h
l
k
ooo
ppp
我想打印線2,6,10-的長度的總和的值。 對於該輸入文件:4 + 2 + 3和輸出:9.
我想打印文件中所選行的總和。使用shell腳本查找所選行的長度總和?
例如,具有如下的文件開始符合「SSS」:
sss
nnnn
rrrrr
ttt
eeee
gg
h
l
k
ooo
ppp
我想打印線2,6,10-的長度的總和的值。 對於該輸入文件:4 + 2 + 3和輸出:9.
隨着awk:
awk 'NR==2||NR==6||NR==10{sum+=length($0)}END{print sum}' file.txt
NR
是當前行號||
是OR語句{}
是條件{}
是動作sum+=length($0)
增量與當所有的行已被讀出的END
塊執行@the端的當前行+1並且可以縮寫爲'awk'NR〜/ ^(2 | 6 | 10)$/{sum + = length($ 0)} END {print sum}'file.txt' –
echo "$(($(sed -n 's/ *$//;2p;6p;10p' file.txt | wc -c)-3))"
這將通過sed
打印出行列表中的總字符(2p;6p;10p;
,您可以將其更改爲任何您想要的),使用wc
至c ount每行中的字符,我們起飛3因爲換行符可以在腳本中創建字符串,只需確保將數字3調整爲打印出的多行。
在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
看起來像一個家庭作業,但我給了你一個swer =) –