Получить разделитель полей из файла - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть несколько файлов, и они отличаются друг от друга, и они используют; и | в качестве разделителей.

Есть ли способ, позволяющий моей программе читать файл, получить; или | разделитель, чтобы сохранить в переменную и использовать его позже в моем скрипте?

1 Ответ

0 голосов
/ 11 ноября 2018

В общем случае ответ «да», вы можете динамически определить разделитель и использовать его в дальнейшем кодировании.

Вы не упомянули, как вы будете определять, какой разделитель используется (например, что произойдет, если оба символа существуют в вашем файле данных?), Поэтому для обсуждения предположим, что разделитель был определен и сохранен в переменной del.

Вы также не указали, как будете использовать этот разделитель в своем коде, поэтому, опять же, для обсуждения, мы рассмотрим примеры с использованием cut и awk.

Предположим, что наш файл данных (mydata) содержит следующую единственную строку данных:

$ cat mydata
abc;def|ghi;jkl|mno;pqr|stu

Теперь мы переключим наш разделитель между ; и | и рассмотрим несколько простых примеров cut и awk ...

############################
# set our delimiter to ';'

$ del=";"

##### display 1st field

$ cut -d"${del}" -f1 mydata
abc

$ awk -F"${del}" '{print $1}' mydata
abc

#### display 4th field

$ cut -d"${del}" -f4 mydata
pqr|stu

$ awk -F"${del}" '{print $4}' mydata
pqr|stu

############################
# set our delimiter to '|'
#

$ del="|"

##### display 1st field

$ cut -d"${del}" -f1 mydata
abc;def

$ awk -F"${del}" '{print $1}' mydata
abc;def

##### display 4th field

$ cut -d"${del}" -f4 mydata
stu

$ awk -F"${del}" '{print $4}' mydata
stu
...