Bash Unix:awk将值另存为变量
我有一个带有几个下划线的文件名:Bash Unix:awk将值另存为变量,bash,variables,awk,save,Bash,Variables,Awk,Save,我有一个带有几个下划线的文件名: nc_glals_3_4.mrc 在那里我可以用awk读出值3和4: $ echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print$3$4}' 34 但是,如果我想将34存储为变量并调用该变量,则它不起作用: $ variable=$("nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}') -bash: nc_glals_3_4.mrc
nc_glals_3_4.mrc
在那里我可以用awk读出值3和4:
$ echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print$3$4}'
34
但是,如果我想将3
4存储为变量并调用该变量,则它不起作用:
$ variable=$("nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')
-bash: nc_glals_3_4.mrc: command not found
$ variable="$("nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')"
-bash: nc_glals_3_4.mrc: command not found
$ variable
-bash: variable: command not found
怎么了?如果我理解你的问题:
variable=$(echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')
您的命令中需要回声。。。。现在“34”存储到变量中。如果我理解您的问题:
variable=$(echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')
您的命令中需要回声。。。。现在“34”存储到变量中。正如您在命令行上使用了
echo
一样,您还需要在子进程调用中使用echo
,例如:
# wrong:
$ variable=$("nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')
# right:
$ variable=$(echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')
# or using here string:
$ variable=$(awk -F'[_.]' '{print $3$4}' <<< "nc_glals_3_4.mrc")
正如您在命令行上使用了
echo
,您也需要在子进程调用中使用echo
,例如:
# wrong:
$ variable=$("nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')
# right:
$ variable=$(echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')
# or using here string:
$ variable=$(awk -F'[_.]' '{print $3$4}' <<< "nc_glals_3_4.mrc")
如果要保留的数字始终位于同一位置:
test@darkstar:~$ Filename="nc_glals_3_4.mrc"
test@darkstar:~$ awk -F'[_.]' '{print$3$4}' <<< $Filename
34
test@darkstar:~$ Numbers=$(awk -F'[_.]' '{print$3$4}' <<< $Filename)
test@darkstar:~$ echo $Numbers
34
test@darkstar:~$
test@darkstar:~$Filename=“nc\u glals\u 3\u 4.mrc”
test@darkstar:~$awk-F'[557;]'{print$3$4}'如果要保留的数字始终位于同一位置:
test@darkstar:~$ Filename="nc_glals_3_4.mrc"
test@darkstar:~$ awk -F'[_.]' '{print$3$4}' <<< $Filename
34
test@darkstar:~$ Numbers=$(awk -F'[_.]' '{print$3$4}' <<< $Filename)
test@darkstar:~$ echo $Numbers
34
test@darkstar:~$
test@darkstar:~$Filename=“nc\u glals\u 3\u 4.mrc”
test@darkstar:~$awk-F'[\.]'{print$3$4}'变量=$(echo“nc_glals_3_4.mrc”{print$3$4}')
您需要echo
内部的$(…)
就像外部一样。Bash正在尝试将字符串作为程序运行变量=$(echo“nc_glals_3_4.mrc”| awk-F'[|]''{print$3$4}')
您需要echo
内部$(…)
就像外部一样。Bash正在尝试将字符串作为程序运行