在Bash脚本中读取文件

时间:2017-01-12 13:46:59

标签: bash scripting

我的文件系统中有一个文件。我想用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"

2 个答案:

答案 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=)