我的文件系统中有一个文件。我想用bash脚本读取该文件。文件格式不同我想只读取文件中的选定值。由于文件非常庞大,我不想阅读整个文件。以下是我的文件格式:
Name=TEST
Add=TEST
LOC=TEST
在文件中,它将包含如上所示的数据。从那里我想只获得一个变量中的添加日期。你能否告诉我如何做到这一点。
截至目前,我这样做是为了阅读文件:
file="data.txt"
while IFS= read line
do
# display $line or do somthing with $line
echo "$line"
done < "$file"
答案 0 :(得分:4)
使用适合作业的正确工具{@ 1}}来加快速度!
Awk
我们的想法是将输入行分为dateValue="$(awk -F"=" '$1=="Add"{print $2; exit}' file)"
printf "%s\n" "dateValue"
TEST
作为去限制器。 =
逻辑通过检查等于awk
的{{1}}字段并打印与其关联的相应值来工作。
打印后的$1
部分是可选的。只要满足Add
字符串,它就会退出处理。如果文件很大,它将有助于快速处理。
答案 1 :(得分:2)
你可以用这种方式重写你的循环,在得到你的行后注意break
:
while IFS='=' read -r key value; do
if [[ $value == "Add" ]]; then
# your logic
break
fi
done < "$file"
如果您打算第一次出现&#34; Add =&#34;,那么您可以这样使用grep
:
value=$(grep -m 1 '^Add=' "$file" | cut -f2 -d=)