txt 파일에서 특정 패턴을 가진 숫자를 추출하는 방법
글쓴이: choroot / 작성시간: 수, 2008/08/06 - 5:28오전
UNIX시스템에서 VI편집기로 프로그램을 하고 있습니다.
프로그램을 돌린 결과는 txt파일로 나오며, 다양한 정보를 담고 있습니다.
그 중 제가 원하는 정보는 1234E-10 과 같은 패턴을 가지고 있습니다.
이 정보의 윗줄과 아랫줄 그리고 오른쪽에는 필요없는 정보들이 있어서,
제가 원하는 값 1234E-10만을 얻기 위해서는 지루한 편집 작업을 해야합니다.
이러한 작업을 편리하게 하기 위해서는 어떤 언어의 어떤 기능을 이용하면 편할까요?
Forums:
python의 find
python으로 파일 읽어서
한줄씩 받아서 find로 찾으면 되겠네요
sed를 사용해 보세요.
정규표현식과 한 줄의 명령(sed 혹은 egrep 등)으로 원하시는 작업을 하실 수 있을 겁니다.
아래는 kldp 에 있는 sed awk 입문서 입니다.
sed와awk
대략 아래처럼 하면 됩니다. 쉘에서..
sed -n '/1234E-10/p' 파일명
이렇게 하시면 1234E-10이 들어있는 줄만 나옵니다.
오른쪽에 있는 걸 지우시려면. 백 레퍼런스를 사용하는게 편할 것 같습니다.
자세한건 정규표현식과 백 레퍼런스를 찾아보세요 :)
조금이라도 도움이 되셨길.
간단하게 스크립트를 사용하면...
전제1. 첫번째로 1234E-10 과 같은 패턴이라 함은 4557E-8 5000E-12 같은 값만 필요하단 말로 들립니다.
전제2. 그리고 구한 값들은 모두 첫번째 열에 있고 그 뒤에 있는 값들을 무시하고 싶다라고 가정합니다.
위의 제 전제가 맞다고 하시면 아래 스크립트를 사용하시면 간단하게 출력됩니다.
$ cat 123.txt ; 파일 123.txt의 내용이 아래와 같음
hello
1234E-10 hi everyone
3000E-10 welcom to my home
bye
$ grep ^[1-9][0-9][0-9][0-9]E- 123.txt | awk '{print $1}'
1234E-10
3000E-10
- A wise man builds his house on the rock
- A wise man builds his house on the rock
댓글 달기