텍스트 파일에서 특정 줄만 읽고 일치하는 내용을 변수에 저장합니다.

텍스트 파일에서 특정 줄만 읽고 일치하는 내용을 변수에 저장합니다.

이 문제가 있습니다.

해당 텍스트의 특정 패턴으로 찾은 텍스트 파일에서 일부 단어를 추출해야 합니다. 예를 들어:

/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개의 변수로 나누어진다.

예: 다음과 같은 형식의 텍스트 문서가 있습니다.

/집/이름/파일:
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 디렉터리에서도 하나를 찾으므로 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

...첫 번째 예에 따라 블록 사이에 실제로 빈 줄이 있다고 가정합니다.

관련 정보