我需要读取一个像
这样的行的文件user=username1
pass=password1
如何将这样的多行读入单独的变量,如用户名和密码?
我会使用awk还是grep?我已经找到了用grep读取变量行的方法,但是我需要读取每个项目的文件吗?
最终结果是使用这些变量通过命令行访问数据库。所以我需要能够在其他命令中读取,存储和使用这些值。
答案 0 :(得分:2)
如果生成文件的进程是安全的并且具有shell语法,则只需获取文件。
. ./file
否则文件可以在添加引号之前进行处理
perl -ne 'if (/^([A-Za-z_]\w*)=(.*)/) {$k=$1;$v=$2;$v=~s/\x27/\x27\\\x27\x27/g;print "$k=\x27$v\x27\n";}' <file >file2
. ./file2
答案 1 :(得分:1)
如果您想使用awk,那么
输入
$ cat file
user=username1
pass=password1
阅读
$ user=$(awk -F= '$1=="user"{print $2;exit}' file)
$ pass=$(awk -F= '$1=="pass"{print $2;exit}' file)
输出
$ echo $user
username1
$ echo $pass
password1
答案 2 :(得分:0)
<强> file.txt的强>:
write
要避免多次浏览文件user=username1
pass=password1
user=username2
pass=password2
user=username3
pass=password3
:
file.txt
输出:
#!/usr/bin/env bash
func () {
echo "user:$1 pass:$2"
}
i=0
while IFS='' read -r line; do
if [ $i -eq 0 ]; then
i=1
user=$(echo ${line} | cut -f2 -d'=')
else
i=0
pass=$(echo ${line} | cut -f2 -d'=')
func "$user" "$pass"
fi
done < file.txt
答案 3 :(得分:0)
您可以为您的文件使用循环,但这可能是您正在寻找的功能。
$ echo 'user=username1' | awk -F= '{print $2}'
username1
使用-F
标志将分隔符设置为=
,然后从行中选择第2项。