亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用linuxShell腳本把一個數組傳遞到awk內部進行處理

發布時間:2021-09-16 13:51:48 來源:億速云 閱讀:120 作者:柒染 欄目:開發技術

如何使用linuxShell腳本把一個數組傳遞到awk內部進行處理,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Shell腳本里面怎樣把一個數組傳遞到awk內部進行處理?

測試環境:

[root]# head -1 /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
[root]# awk --version | head -1
GNU Awk 3.1.7

眾所周知,Shell腳本里面把一個普通變量傳遞給awk是非常簡單的,直接用 -v 參數賦值就行了。

str1="Hello World"
awk -v str2="$str1" 'BEGIN{print str2}'

但是,要把一個數組傳遞給awk就不是那么簡單的事情了。請看以下三個試驗:

1. 簡單的數組可以先賦值后split

arr1=(A B C)
awk -v arr2="${arr1[*]}" 'BEGIN{split(arr2,arr3," "); print arr3[2]}'

2. 有些情況下很難找到合適的分隔符來進行split,因為某個數組元素可能會包含你想用來作為分隔符的那個字符,這時split之后無法得到希望的結果。所以這個方法不夠嚴謹,尤其是當我們無法預測數組元素可能包含哪些字符的時候。

arr1=(A "B C" D)
awk -v arr2="${arr1[*]}" 'BEGIN{split(arr2,arr3," "); print arr3[2]}'

3. 可以借助export命令和awk的ENVIRON默認數組來實現這個功能

arr1=(A "B C" D)
for((i=0;i<${#arr1[*]};i++)); do
   export arr1_m$i="${arr1[$i]}"
done
awk 'BEGIN{for(i in ENVIRON)if(i~/arr1_m/)print i "=" ENVIRON[i]}'

我這里只是為了演示功能,所以沒有把export變量名的定義和awk內部的字符串匹配寫的特別考究,大家可以根據實際情況進行調整(比如添加更多的限制條件等)。

Shell腳本里面把一個數組傳遞到awk內部進行處理,技術上可行,但不建議在生產環境上使用。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

墨脱县| 桐庐县| 南阳市| 巴楚县| 九寨沟县| 祁门县| 冀州市| 墨竹工卡县| 太谷县| 泽库县| 松溪县| 谷城县| 鄂托克旗| 扶绥县| 麻阳| 灵石县| 广平县| 虞城县| 菏泽市| 尉氏县| 西乌珠穆沁旗| 甘孜县| 来宾市| 武隆县| 潮安县| 灵山县| 洪泽县| 车险| 炉霍县| 安图县| 日喀则市| 白水县| 姜堰市| 班玛县| 和林格尔县| 乐平市| 尼木县| 灯塔市| 铜鼓县| 韩城市| 民丰县|