![파일의 한 줄 부분에서 7자만 포함하는 파일/또는 여러 파일*에서 항목을 추출해 보십시오.](https://linux55.com/image/190837/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%ED%95%9C%20%EC%A4%84%20%EB%B6%80%EB%B6%84%EC%97%90%EC%84%9C%207%EC%9E%90%EB%A7%8C%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20%ED%8C%8C%EC%9D%BC%2F%EB%98%90%EB%8A%94%20%EC%97%AC%EB%9F%AC%20%ED%8C%8C%EC%9D%BC*%EC%97%90%EC%84%9C%20%ED%95%AD%EB%AA%A9%EC%9D%84%20%EC%B6%94%EC%B6%9C%ED%95%B4%20%EB%B3%B4%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
나는 7자리 숫자만 포함된 항목을 찾아내려고 하는 파일이 많습니다.
다음은 제가 추출하려는 내용의 예입니다.
CDR Calling Number: +15555555555
CDR Called Number: 5557600
이것은 현재 가져와야 하는 명령이지만 이 명령은 내가 원하지 않는 다른 항목도 끌어옵니다.
cat file* |grep -v "CDR Called Number: +1" |grep -B 1 "CDR Called Number"
다음은 내가 성공하지 못한 채 시도한 몇 가지 항목입니다.
grep '^.......' file*
grep -E '^.{7}$' file*
sed -rn '/^.{7}$/p' file*
답변1
당신이 원하는
grep -E '\D\d{7}$'
- 숫자가 아닌 숫자 뒤에 7자리 숫자와 줄의 끝이 옵니다.
이것은 또한 작동할 수 있습니다
awk 'length($NF) == 7 && $NF !~ /[^0-9]/'
- 마지막 필드의 길이는 7자이며 숫자가 아닌 숫자는 포함되지 않습니다.
귀하의 예에는 몇 가지 오류가 있습니다.
grep '^.......'
-- 와이어시작7개로모든 문자grep -E '^.{7}$'
-- 이 줄의 길이는 정확히 7자입니다.