2013-02-13 64 views
0

這個txt文件的是情到我的文件TXT:解析不同IFS

kevin \t password \t path \n 

steve \t password \t path \n 

etc... 

我怎麼能分析此類型的文件,以獲取名稱到一個數組,密碼到另一個陣列和同上的路徑? 我以爲使用IFS變量,但我有問題,以確定什麼是id或psw或路徑。

我從這個代碼開始:

old_IFS=$IFS 

IFS=$'\t\n' 

lines=($(cat MYFILE)) 

IFS=$old_IFS 

或者是更好地使用AWK?

有人有想法嗎?

+0

我可以告訴你如何得到這些值轉換成數組,但我大概可以告訴你一些更有趣的事情,如果我知道你想要做什麼與陣列一旦你有他們。 – kojiro 2013-02-13 19:25:19

+0

對於每個用戶psw-path我想啓動ftp命令 – rschirin 2013-02-14 15:28:51

+0

所以你根本不需要數組:你可以爲每一行執行ftp命令。 – kojiro 2013-02-14 16:24:53

回答

1

使用一段時間讀循環:

while IFS=$'\t' read user password path 
do 
    users+=("$user") 
    passwords+=("$password") 
    paths+=("$path") 
    echo "$user's password is $password, and their path is $path" 
done < yourtextfile 
+0

這些不是一些陣列=) – 2013-02-13 19:25:43

+0

這很容易修復:) – chepner 2013-02-13 19:38:00

+0

我在OS X 10.8和SUSE Linux 11下試過這個代碼:'users'變量是整行,而'password'和'path'是空白的。 – 2013-02-13 20:15:05

0

這裏是一個低效率的做法,是仍然容易閱讀:

f() { 
    local IFS=$'\n' # Don't wordsplit on just any whitespace. Newlines only 
    names=($(cut -d$'\t' -f1 < file)) 
    passes=($(cut -d$'\t' -f2 < file)) 
    paths=($(cut -d$'\t' -f3 < file)) 
} 
f 
+0

雖然在字段中的空格效果不佳。 – 2013-02-13 19:30:32

+0

@thatotherguy true。被編輯爲換行符的文字。 – kojiro 2013-02-13 19:32:48