簡體   English   中英

使用Shell腳本將文本文件提取到變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM