AWK不适用于由^ A分隔的第一行

时间:2013-10-07 14:49:05

标签: python bash awk

我有一个类似这样的文件(^ A是非打印字符,下面是VI中的视图),^ A分隔的列和\ n终止的行。

# 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
...

不知何故,第一行在时间戳之后跳过了部分,任何人都知道我做错了什么。 谢谢!

1 个答案:

答案 0 :(得分:13)

这是因为在开始处理输入文件之前必须在BEGIN块中设置这些变量,如:

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