awk에 대한 두 번째 호출에 변수 값 전달

awk에 대한 두 번째 호출에 변수 값 전달

다음 명령의 다음 문 var에 변수를 전달하고 싶습니다.awk

cat scr1|awk '{val=substr($0,10,10)} 1'|awk '/           /{print $0}'

이 명령문은 파일의 10~19번째 위치에서만 10개의 공백으로 구성된 문자열을 찾아 해당 행만 반환합니다. 누구든지 더 좋은 방법이 있으면 알려주세요.

답변1

substr()이 반환한 문자열이 10개의 공백으로 구성되어 있는지 확인하세요.

awk 'substr($0,10,10))=="          "' infile

답변2

"파일의 10~19번째 위치에서 10개의 공백을 포함하는 문자열만 찾고 해당 줄만 반환"하려면:

$ cat file
12345678901234567890123
123456789          0123
12345678901234567890123

$ awk '/^.{9} {10}/' file
123456789          0123

답변3

#!/usr/bin/python
import re
k=re.compile(r'.{9}\s{10}')
o=open('filename','r')
for h in o:
    if re.search(k,h):
        print h
~                  

입력하다

 cat filename
123456789           1223
praveen1234444

산출

python script.py 
123456789           1223

답변4

그건 작동하지 않습니다. 파이프라인의 모든 명령은 동시에 시작됩니다. 따라서 첫 번째 awk가 두 번째 awk에 영향을 미치기 전에 두 번째 awk가 이미 실행되었습니다.

어때요?

awk 'substr ($0, 10, 10) ~ /^[[:blank:]]*$/' scr1

하위 문자열을 추출하고 모두 공백이 있는 패턴과 일치하는지 확인합니다. 고양이와 파이프를 거치는 대신 awk가 파일 자체를 읽도록 하세요.

관련 정보