Shell-Script
如何分解字元串 - Bash
我有一個具有以下格式的字元串列表。我可以使用哪些命令來提取相應的部分。我正在考慮使用 grep 來提取關鍵字,即:ADD、使用者名(atra522)等。我應該如何解決這個問題?
cop1010 ADD atra522,Allison Track,CT,canada
我知道如何使用 cut 或 awk 通過查找逗號來獲取所有欄位,但我不知道如何使其與第一個欄位“cop1010 ADD atra522”一起使用。
你說
bash
,所以讓我們用 shell 內置函式來做這一切:$ inp="cop1010 ADD atra522,Allison Track,CT,canada" $ IFS=, fields=($inp) $ echo ${fields[0]} cop1010 ADD atra522 $ echo ${fields[1]} Allison Track $ echo ${fields[2]} CT $ echo ${fields[3]} canada $ IFS=\ cmd=(${fields[0]}) $ echo ${cmd[0]} cop1010 $ echo ${cmd[1]} ADD $ echo ${cmd[2]} atra522 $
您可以將它們全部設置為變數(而不是回顯它們),並且永遠不需要生成子shell 來執行
awk
、cut
或任何其他工具。
您可以使用 awk 的
split
函式將第一個欄位進一步拆分為一個數組,例如echo 'cop1010 ADD atra522,Allison Track,CT,canada' | awk -F, '{ split($1,a,"[ \t]+"); if (a[2] == "ADD") { printf "Adding user: %s\n", a[3]; } }'