Arrays 使用不同IFS解析txt文件
这是我的txt文件中的情况:Arrays 使用不同IFS解析txt文件,arrays,bash,parsing,Arrays,Bash,Parsing,这是我的txt文件中的情况: kevin \t password \t path \n steve \t password \t path \n etc... 如何解析此类文件以将名称放入数组,将密码放入另一个数组,并将idem作为路径? 我想使用IFS变量,但我在识别id、psw或path时遇到了问题 我从以下代码开始: old_IFS=$IFS IFS=$'\t\n' lines=($(cat MYFILE)) IFS=$old_IFS 还是使用awk更好 有人有想法吗?使用
kevin \t password \t path \n
steve \t password \t path \n
etc...
如何解析此类文件以将名称放入数组,将密码放入另一个数组,并将idem作为路径?
我想使用IFS变量,但我在识别id、psw或path时遇到了问题
我从以下代码开始:
old_IFS=$IFS
IFS=$'\t\n'
lines=($(cat MYFILE))
IFS=$old_IFS
还是使用awk更好
有人有想法吗?使用while read循环:
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
而IFS=$'\t'读取用户密码路径
做
用户+=(“$user”)
密码+=(“$password”)
路径+=(“$path”)
echo“$user的密码是$password,其路径是$path”
完成
这里有一种低效的方法,但很容易阅读:
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
f(){
local IFS=$'\n'#不在任何空格上拆分单词。仅限换行
名称=($(剪切-d$'\t'-f1<文件))
过程=($(剪切-d$'\t'-f2<文件))
路径=($(剪切-d$'\t'-f3<文件))
}
F
我可以告诉您如何将这些值放入数组,但是如果我知道一旦你有了阵列,你想对它们做什么,我可能会告诉你一些更有趣的事情。对于每个用户psw路径,我想启动ftp命令,所以你根本不需要阵列:你可以对每一行执行ftp命令。这些不是一些阵列=)我在OS X 10.8和SUSE Linux 11:users
变量是整行,而password
和path
是空的。这是因为您的字段没有按问题用制表符分隔。@That't true。编辑为换行符上的wordsplit。