Как прикрепить номера от имени файла до начала CSV, используя AWK - PullRequest
0 голосов
/ 05 марта 2019

Я хочу использовать команду awk, чтобы прикрепить все числа из имени файла к началу файла csv.

В настоящее время я использую код ниже, чтобы прикрепить только имя файла к началуCSV-файл, но я хотел бы добавить все числа из строки перед именем файла.

awk '{print "\"" FILENAME "\"," $0}' filename_1.csv >> filename_2.csv

Может кто-нибудь помочь мне, пожалуйста?

Пример имени_файла_1.csv

name,id,color
fred,1,blue
james,2,green
tom,3,purple

Ожидаемый результат:

1,filename_1.csv,name,id,color
1,filename_1.csv,fred,1,blue
1,filename_1.csv,james,2,green
1,filename_1.csv,tom,3,purple

Заранее спасибо ...

Ответы [ 2 ]

0 голосов
/ 05 марта 2019
$ awk 'BEGIN {FS=OFS=","} FNR==1 {fn=FILENAME; split(fn, a, /[_.]/); n = a[2]} { print n, fn, $0 }' filename_1.csv 
1,filename_1.csv,name,id,color
1,filename_1.csv,fred,1,blue
1,filename_1.csv,james,2,green
1,filename_1.csv,tom,3,purple
0 голосов
/ 05 марта 2019

Вот один из них:

$ awk 'FNR==1{                # first record
    match(FILENAME,/[0-9]+/)  # search for the first string of numbers 
}{                            # if found, print numbers, filename and record:
    print (RSTART?substr(FILENAME,RSTART,RLENGTH) ",":"") FILENAME "," $0
}' filename_1.csv 

Вывод:

1,filename_1.csv,name,id,color
1,filename_1.csv,fred,1,blue
1,filename_1.csv,james,2,green
1,filename_1.csv,tom,3,purple

Если в имени файла нет чисел, не печатайте их, например, вывод для файла foo:

foo,name,id,color
foo,fred,1,blue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...