テキストファイルから特定の行のみを読み込み、一致する内容を変数に保存します。

テキストファイルから特定の行のみを読み込み、一致する内容を変数に保存します。

この問題があります。

そのテキストの特定のパターンで見つかったテキストファイルからいくつかの単語を抽出する必要があります。たとえば、

/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.txt3つのことを行う必要があります。

  • 文書
  • 日付
  • 発売回数

3つの変数に分けられる。

例: 次の形式のテキスト文書があります。

/家/名前/ファイル:
File.txt, 2014 年 12 月 5 日-1
ファイル2.txt、2014年8月15日-2
/家/名前/音楽:
File.txt, 2014 年 4 月 15 日-2
f2ile3.txt,8.2.2015-5
ファイル2.txt、2014年7月6日-3
/家/名前/ビデオ:
File.txt、日付-5

そして、musicとdocumentディレクトリには同じファイルがあるので、music file.txtでのみ選択したいと思います。ただし、file.txtを見つけるときにDocumentsディレクトリでも1つを見つけるので、 musicディレクトリから1つを選択すると最終的に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

...最初の例では、ブロック間に実際に空白行があるとします。

関連情報