이 문제가 있습니다.
해당 텍스트의 특정 패턴으로 찾은 텍스트 파일에서 일부 단어를 추출해야 합니다. 예를 들어:
/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
...첫 번째 예에 따라 블록 사이에 실제로 빈 줄이 있다고 가정합니다.