鉴于shell脚本先前定义的$行,我做了以下将多个剪切命令为可变幽会到一个剪切命令
var1=$(echo $LINE | cut -d, -f4)
var2=$(echo $LINE | cut -d, -f5)
var3=$(echo $LINE | cut -d, -f6)
有什么办法,我把它组合到一个命令,其中剪辑只运行一次? 喜欢的东西
var1,var2,var3=$(echo $LINE | cut -d, -f4,5,6)
鉴于shell脚本先前定义的$行,我做了以下将多个剪切命令为可变幽会到一个剪切命令
var1=$(echo $LINE | cut -d, -f4)
var2=$(echo $LINE | cut -d, -f5)
var3=$(echo $LINE | cut -d, -f6)
有什么办法,我把它组合到一个命令,其中剪辑只运行一次? 喜欢的东西
var1,var2,var3=$(echo $LINE | cut -d, -f4,5,6)
是的,如果你确定使用数组:
var= ($(echo $LINE | cut -d, --output-delimiter=' ' -f4-6))
需要注意的是,使var
0索引。
尽管将CSV $LINE
转换为bash括号可理解的内容可能会更快更容易,然后只需执行var = ($LINE)
即可。
编辑:以上会导致一些问题,如果你在你的$ LINE有空格......如果是这样,你需要多一点谨慎,并可能AWK是一个更好的选择,添加引号:
var= ($(echo $LINE | awk IFS=, '{print "\"$4\" \"$5\" \"$6\""}'))
的内置read
命令可以分配给多个变量:
IFS=, read _ _ _ var1 var2 var3 _ <<< "$LINE"
绝对是最好的答案,只是你认为只有6个字段。也许'读_ _ _ var1 var2 var3 _'会更合适? –
烨正是我一直在寻找。不知道($ LINE)的东西改变了所有的数组。谢谢。 – saccharine
这是一个不好的答案。不要wordsplit命令替换输出。此外,由于分配语法不正确,它将无法工作。 – ormaaj