2013-10-07 1 views
2

У меня есть файл, похожий на это (^ A - это не печатный символ, а ниже - вид в VI), столбцы, разделенные символом^A и строки, завершенные \ n ,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

+1 для воспроизводимой теста! Удачи. – shellter

ответ

11

Это потому, что эти переменные должны быть установлены перед началом обработки входных файлов, в BEGIN блоке, как:

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

+1: Или 'awk -F $ '\ 1' '{print $ 1}'', используя нотацию 'bash' для элемента управления -A и задающую разделитель полей в командной строке. –

Смежные вопросы