2013-10-07 2 views
2

파일은^A로 구분 된 열과 \ n에 의해 종결 된 행 (^ A는 인쇄 할 수없는 문자이고 아래에는 VI의보기입니다) .AWK가^A로 구분 된 첫 번째 행에서 작동하지 않습니다.

# input 
2013-10-07 10:40:14.170976^Awww.abc.com/0 
2013-10-07 10:40:14.171074^Awww.abc.com/1 
2013-10-07 10:40:14.171101^Awww.abc.com/2 
2013-10-07 10:40:14.171133^Awww.abc.com/3 
2013-10-07 10:40:14.171156^Awww.abc.com/4 
... 

는 아래 파이썬 스크립트를 사용하여 파일을 다시 만들 수 있습니다 :

# test.py 
from datetime import datetime 
for i in range(10): 
    print chr(1).join(str(elem) for elem in [datetime.now(), 'www.abc.com/' + str(i)]) 

그런 다음
python test.py > input 

내가 AWK 사용하여 파일의 첫 번째 열 (타임 스탬프)을 얻기 위해 노력했다.

cat input | awk 'FS="\x01"{print $1}' 

2013-10-07 
2013-10-07 10:40:14.171074 
2013-10-07 10:40:14.171101 
2013-10-07 10:40:14.171133 
2013-10-07 10:40:14.171156 
... 

아무튼, 첫 번째 행은 타임 스탬프 이후에 부분을 건너 뜁니다. 아무도 내가 잘못한 것을 알고 있습니다. 감사합니다.

+0

하나! 행운을 빕니다. – shellter

답변

11

그 변수처럼 BEGIN 블록, 입력 파일을 처리하기 위해 시작하기 전에 설정해야합니다 때문입니다 : 복제 테스트 케이스에 대한

awk 'BEGIN { FS="\x01" } {print $1}' input 
+5

+1 : 또는'awk -F $ '\ 1' '(print $ 1)'', control-A에 bash 표기법을 사용하고 명령 행에 필드 구분자를 설정하십시오. –

관련 문제