2013-10-07 31 views
2

我有一個與此類似的文件(^ A是非打印字符,下面是VI中的視圖),由^ A定界的行和由\ n終止的行。AWK在由^分隔的第一行不起作用A 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 
... 

您可以使用以下Python腳本創建該文件:

# 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

+1用於複製的測試用例!祝你好運。 – shellter

回答

11

這是因爲這些變量必須開始處理輸入文件,在BEGIN塊,像以前一樣進行設置:

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

+1:或'awk -F $'\ 1''{print $ 1}'',使用控制-A的bash'表示法並在命令行中設置字段分隔符。 –

相關問題