다음 명령의 다음 문 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가 파일 자체를 읽도록 하세요.