Grep 일치 및 루프 디렉터리와 다른 출력 파일에 저장

Grep 일치 및 루프 디렉터리와 다른 출력 파일에 저장

다음과 같이 3개의 파일이 있습니다.

1.out
a 
b
c

2.out
g
h
abcd
a 
h

3.out
b
c
e
a

위 줄과 아래 줄을 일치시키고 새 해당 파일에 저장하려면 파일에 "a" 패턴이 필요합니다.

for file in *.out;do grep -A 1 -B 1 'a' $file > $file_output.txt; done

답변1

_(밑줄)은 변수 이름에 유효한 문자입니다.

이는 $file_output.txt변수를 사용 하고 해당 값에 file_output문자열을 추가하는 것을 의미합니다. .txt변수가 존재하지 않으면 이제 이름이 변수입니다 .txt.

변수 이름이 앞에서 끝나는 것을 쉘에 알리려면 _이름 주위에 중괄호를 사용하십시오.

"${file}_output.txt"

file 1.out또한 변수 확장은 따옴표로 묶여 있습니다( 현재 디렉토리의 파일 이름에 공백( ) 또는 파일 이름 와일드카드(또는 유사한 문자)가 포함된 경우 [123].out필요함 *.out).

최종 루프:

for file in *.out; do
    grep -A 1 -B 1 'a' "$file" >"${file}_output.txt"
done

관련 정보