2

我有一个类似这样的文件(^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
...

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

4

1 回答 1

14

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

awk 'BEGIN { FS="\x01" } {print $1}' input
于 2013-10-07T14:54:45.650 回答