[英]Using shell script to extract text file to a variable
我在文本文件中有一組數據。
aaa:bbb:ccc
ddd:fff:ggg
,以':'分隔,我有一個變量1,2和3。如何分隔數據,比如說我只在aaa行中感興趣。 所以我將有1 = aaa,2 = bbb和3 = ccc。
嘗試使用
1=grep "$a" textfile.txt | awk -F ':' '{print $1}'
2=grep "$a" textfile.txt | awk -F ':' '{print $2}'
3=grep "$a" textfile.txt | awk -F ':' '{print $3}'
但不起作用。 請指教。 謝謝!
嘗試這個:
VAR1=$(grep "$a" textfile.txt | awk -F ':' '{print $1}')
VAR2=$(grep "$a" textfile.txt | awk -F ':' '{print $2}')
VAR3=$(grep "$a" textfile.txt | awk -F ':' '{print $3}')
您的變量不能只是數字,還需要將grep的輸出設置為var(而不是命令本身)
編輯 :
您還可以使用以下內容:
VAR1=$(awk -F ':' '{print $1}' textfile.txt)
VAR2=$(awk -F ':' '{print $2}' textfile.txt)
VAR3=$(awk -F ':' '{print $3}' textfile.txt)
獲得這些變量的最簡單方法是使用已讀公告的BASH數組:
> read -a arr< <(IFS=':' && grep "aaa" file)
> printf "%s\n" "${arr[@]}"
aaa
bbb
ccc
如果要使用位置參數,則可以使用子外殼程序和IFS變量來提取值:
$ line="aaa:bbb:ccc"
$ set -- $(IFS=:; echo $line)
$ echo $1
aaa
$ echo $2
bbb
$ echo $3
ccc
要遍歷文件,使用position參數不必要地是不透明的:
while IFS=: read -r a b c; do
echo "$((++line)), a=$a b=$b c=$c"
done < file
1, a=aaa b=bbb c=ccc
2, a=ddd b=fff c=ggg
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.