鑑於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