仅读取文本文件中的特定行并将匹配项保存到变量中

仅读取文本文件中的特定行并将匹配项保存到变量中

我有这个问题。

我需要从文本文件中提取一些单词,我通过该文本中的特定模式找到这些单词。例如:

/this/is/path:
file1.txt,date-3
file2.txt,date-2
/this/is/path2:
file.txt,date-1
file2.txt,date-5

模式将是/path:和 只选择在那之后和之前的行/path:。因为可能存在同名的文件。我需要找到准确的内容file.txt并采取这三件事:

  • 文件
  • 日期
  • 发射次数

分成3个变量。

示例:我有格式为的文本文档:

/home/名称/文件:
文件.txt,12.5.2014-1
文件2.txt,15.8.2014-2
/主页/名称/音乐:
文件.txt,15.4.2014-2
f2ile3.txt,8.2.2015-5
文件2.txt,7.6.2014-3
/home/名称/视频:
文件.txt,日期-5

并且目录音乐和文档具有相同的文件,我只想从音乐 file.txt 中选择。但是当它查找 file.txt 时,它也会在 Documents 目录中找到一个,所以我只想在 music 目录中选择一个,并且它将以 Video 目录结束。当它找到 file.txt 时,它将像这样保存:1.variable=file.txt, 2.variable=15.4.2014,3.variable=2。

答案1

使用awk:

awk -F'[,-]' '
  /Music/ {f=1} 
  /^$/ {f=0} f && /file\.txt/ \
  {printf "%s\n%s\n%s\n", "var1="$1,"var2="$2,"var3="$3}
  ' file
var1=file.txt
var2=15.4.2014
var3=2

...假设实际上块之间有空行(按照第一个示例)。

相关内容