2015-06-14 8 views
0

Я пытаюсь использовать AWK один вкладыш, который использует переменную bash. Проблема заключается в том, что он печатается более одного раза или выдаёт ошибку. Переменная Баш выглядит следующим образом (без эхо-линии):AWK печать bash переменная более одного раза

echo "$time" 
49.80 
63.4 
61 
60.4 
61 

AWK линии Я пытаюсь использовать это:

awk -v time="$time" -F, '{print $1,$2,$3,$4,$5=time}' file 

выход заключается в следующем:

SantaClara 6/7/2015 D 4 49.80 
63.4 
61 
60.4 
61 
SantaClara 5/29/2015 D 5 49.80 
63.4 
61 
60.4 
61 
SantaClara 5/21/2015 D 5 49.80 
63.4 
61 
60.4 
61 
SantaClara 4/29/2015 D 5 49.80 
63.4 
61 
60.4 
61 
SantaClara 4/22/2015 D 5 49.80 
63.4 
61 
60.4 
61 

И я ищу:

SantaClara 6/7/2015 D 4 49.80 
SantaClara 5/29/2015 D 5 63.40 
SantaClara 5/21/2015 D 5 61 
SantaClara 4/29/2015 D 5 60.4 
SantaClara 4/22/2015 D 5 61 

Я искал RAL на линии AWK и только получили ошибки. Что я делаю не так?

+0

Вы очень смущены о синтаксисе AWK и семантике. Получить книгу Эффективное программирование Awk, 4-е издание, Арнольд Роббинс. –

+1

Благодарим вас за предложение. Я просто скачал его сейчас и буду читать на этой неделе. –

ответ

4

Использование paste вместо:

$ paste file <(echo "$time") 

Используйте переключатель -d если вы хотите определенный разделитель (вкладка по умолчанию).

1

В случае, если вы хотите AWK только решение:

awk -F= 'FNR==NR{a[++i]=$0;next} {print $0, a[FNR]}' <(echo "$time") file 
SantaClara 6/7/2015 D 4 49.80 
SantaClara 5/29/2015 D 5 63.4 
SantaClara 5/21/2015 D 5 61 
SantaClara 4/29/2015 D 5 60.4 
SantaClara 4/22/2015 D 5 61 
Смежные вопросы