2012-12-13 2 views
0

특정 태그를 기반으로 파일에서 정보를 추출하고 싶습니다. 예를 들어 : 내 쉘 스크립트에이 파일에 통과 할 때bash를 사용하여 파일을 한 줄씩 읽으며 일부 데이터를 추출합니다. 방법?

SCRIPT_NAME:mySimpleShell.sh 

This is a simple shell. I would like to have this as 
Description. I also want to create a txt file our of this. 

SCRIPT_NAME:myComplexShell.sh 

This is a complex shell. I would like to have this as 
Description. I also want to create a txt file our of this. 

그래서, 내 쉘 라인으로 라인을 읽하고 SCRIPT_NAME을 얻을 때 는, 그것을 추출하고 $ FILE_NAME에 저장 한 다음 시작 $ FILE_NAME.txt 이름이있는 디스크의 파일에 설명을 작성하십시오. 그리고 그것이 파일의 끝에 도달 할 때까지 그것을합니다. 3 개의 SCRIPT_NAME 태그가 있으면 3 개의 설명 파일을 생성합니다.

답변

0

: 사전에 저를 돕는

감사는 while 루프를 사용하여 라인을 읽어보십시오. 정규식을 사용하여 행에 SCRIPT_NAME이 있는지 확인하고, 그렇다면 파일 이름을 추출하십시오. 이것은 아래에 표시됩니다.

#! /bin/bash 
while IFS= read -r line 
do 
    if [[ $line =~ SCRIPT_NAME:(.*$) ]] 
    then 
     FILENAME="${BASH_REMATCH[1]}" 
     echo "Writing to $FILENAME.txt" 
    else 
     echo "$line" >> "$FILENAME.txt" 
    fi 
done < inputFile 
0
#!/bin/sh 

awk '/^SCRIPT_NAME:/ { split($0, a, ":"); name=a[2]; next } 
    name { print > name ".txt" }' ${1?No input file specified}