Bash
如何從數組中完全刪除元素?
unset array[0]
刪除元素,但如果我這樣做,echo ${array[0]}
我仍然會得到一個空值此外還有其他方法可以做到這一點,但如果數組的元素包含如下所示的空格array[0]='james young' array[1]='mary' array[2]='randy orton'
但這些也無法完成工作
array=${array[@]:1} #removed the 1st element
現在我希望新數組像
array[0]='mary' array[1]='randy orton'
分配後空格會導致麻煩,實際數組變得像替換一樣。
array=(mary randy orton)
只需在賦值上使用數組語法並引用您的變數:
array=("${array[@]:1}") #removed the 1st element
根據評論中的問題進行**編輯。**因為
$@
你可以像這樣使用它:set -- "${@:2}" #removed the 1st parameter
這讓我思考。sed/awk/tail 的問題在於它們是逐行的。刪除第一行後,您必須將模式空間中的每隔一行寫入文件。
- 您可以使用以下命令在幾秒鐘內完成您想做的事情。
- 這會將整個文件寫入數組。
- 刪除第一行,因為它將它轉儲回文件中。
readarray -t aLargeFile < <(cat largefile) echo "${aLargeFile[@]:1}" >largefile
只需將 更改
largefile
為您的文件的名稱。