2014-12-02 4 views
0

Я пытаюсь выполнить команду awk awk "{print NR, $0}" file1.csv, но она добавляет номер строки, за которой следует пробел, а не запятая.Невозможно добавить номер строки в начало каждой строки с awk

Я попробовал другие команды с теми же результатами

awk "{print NR "," $0}" file1.csv 

И у меня есть ошибка, где я использую одинарные кавычки.

Я использую Gawk в Windows. Я что-то упускаю?

Спасибо

+1

Проблемы, что ответы адрес фактически не объясняя, что вы использовали двойные кавычки, которые расширяют переменные оболочки (которые начинаются с '$', а также, если вы посмотрите, где двойные qoutes тогда вы заметите запятую не указывается, что означает, что 'awk' представляет собой запятую, которая в свою очередь представляет собой OFS' (пробел). –

+0

Просто используйте одинарные кавычки:' awk '{print NR "," $ 0}' file'. – fedorqui

ответ

1

Спасибо всем за ответы, но я нашел one, которые работают: на окно Я должен избежать внутренних двойных котировок:

awk "{print NR \",\" $0}" file1.csv 
0

Попробуйте это:

awk '{print NR "," $0}' file1.csv 

Пример:

[email protected]:~$ cat ff 
aa, aa, aa, aa 
aa, aa, aa, aa 
aa, aa, aa, aa 
aa, aa, aa, aa 
aa, aa, aa, aa 
aa, aa, aa, aa 
[email protected]:~$ awk '{print NR "," $0}' ff 
1,aa, aa, aa, aa 
2,aa, aa, aa, aa 
3,aa, aa, aa, aa 
4,aa, aa, aa, aa 
5,aa, aa, aa, aa 
6,aa, aa, aa, aa 
+0

Я пробовал, но окна бросают ошибку, где я использую одну цитату. –

0

Просто включить код в AWK внутри одиночных кавычек вместо двойных кавычек.

awk '{print NR "," $0}' file1.csv 

ИЛИ

awk -v FS="," -v OFS="," "{print NR,$0}" file.csv 

И ваша ваша предыдущая команда awk "{print NR, $0}" file1.csv отображает пространство вместо запятой, так как по умолчанию , в печатной секции будет выводить значение переменной Output Field Separator. По умолчанию значение по умолчанию OFS - это пробел. Таким образом, он отображает пространство вместо запятой.

+0

Я пробовал, но окна вызывают ошибку, где я использую одну цитату –

0

Использование запятой, как в "{print NR, $0}", вы являетесь printing каждый термин после печати с field separator.

Использование двойных кавычек в awk "{print NR "," $0}" вы разделение команда с запятой.

Вы должны использовать одиночные кавычки для всей команды AWK:

awk '{print NR","$0}' file1.csv 

Или использовать printf заявление

awk '{printf("%s,$0\n", NR,$0)}' f 
0

, в вашем awk является полевым разделителем по умолчанию, одним пробелом.
Чтобы получить то, что вы хотите, выберите выходной полевой разделитель.

awk -vOFS="," '{print NR, $0}' file1.csv 
Смежные вопросы