use*_*211 3 unix bash shell awk
好的,所以我在bash / shell脚本中定义了一个变量($ line)为
$line = "abc:123:def:345"
Run Code Online (Sandbox Code Playgroud)
需要获得此column2 =“ 123”
如何提取第二列的值,即“ 123”,并将其命名为另一个变量,以后可以求和?我知道您必须根据定界符':'对其进行分隔,但是我不知道如何在从$ line变量获取输入的同时转移到其他变量。我之所以这么问,是因为出于某种奇怪的原因,我的代码读取了文本文件的第一行,但它并不仅仅在第一行上执行awk,因此总和是错误的。
FILE=$1
while read line
do
awk -F: '{summation += $3;}END{print summation;}'
done < $FILE
Run Code Online (Sandbox Code Playgroud)
-通过外壳脚本编写代码
谢谢。
您可以awk用来获取第二个字段:
line="abc:123:def:345"
Run Code Online (Sandbox Code Playgroud)
awk -F: '{print $2}' <<< "$line"
123
Run Code Online (Sandbox Code Playgroud)
要在 shell 中分配变量,$左侧的 no、 、 和 周围没有空格=,并且<和>不是有效的引号字符
line="abc:123:def:345"
Run Code Online (Sandbox Code Playgroud)
在 bash 中,你可以这样做:
IFS=: read -ra fields <<< "$line"
Run Code Online (Sandbox Code Playgroud)
IFS为冒号$line变量作为read命令的输入(here-string)fields数组。Bash 数组从零开始索引,因此要提取第二个字段:
echo "${fields[1]}" # => 123
Run Code Online (Sandbox Code Playgroud)