我有这个问题。
我需要从文本文件中提取一些单词,我通过该文本中的特定模式找到这些单词。例如:
/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
...假设实际上块之间有空行(按照第一个示例)。