shell脚本内的列分隔

时间:2015-03-31 10:17:40

标签: bash shell

如果我的file.txt包含数据:

abcd!1023!92
efgh!9873!xk

和一个基本的tutorial.sh文件,它贯穿每一行

while read line
do
   name = $line
done < $1

如何在“!”之间分隔数据?进入一列并选择第二列并添加它们? (我知道“sed -k 2 | bc”函数,但我不能/不理解如何使用shell脚本。

2 个答案:

答案 0 :(得分:1)

您可以使用awk:

awk -F '!' '{sum += $2} END{print sum}' file
10896

答案 1 :(得分:1)

调整while循环:

while IFS='!' read -r a b c
do
   ((sum += b))
done < "$1"                  # always quote "$vars"
echo "$sum"

IFS是shell&#34;内部字段分隔符&#34;用于将字符串拆分为单词。它通常是&#34;空白&#34;但你可以根据自己的特殊需要使用它。