У меня есть файл, который выглядит так:
foo 23 45
bar 46
baz 25 57
Это не файл с разделителями. Вместо этого основанные на символах столбцы имеют определенные значения c, которые задокументированы следующим образом:
- Столбцы 1-3 представляют собой одну вещь.
- Колонка 4 является наполнителем.
- Столбцы 5-6 представляют вещь.
- Столбцы 7-9 являются наполнителями
- Столбцы 10-11 представляют вещь.
Примечание (а) разделители отсутствуют (столбцы-заполнители имеют неправильную длину) и (б) некоторые значимые столбцы заполнены пробелами.
Существуют тысячи столбцов.
I хотел бы извлечь определенные столбцы из этого файла и преобразовать их в более стандартный формат с разделителями. Поскольку столбцов тысячи, а документация касается только символьных индексов столбцов, я хотел бы использовать эти индексы в моей команде, а не semanti c индексы столбцов. Например, если бы я хотел первый и последний столбцы, я бы хотел, чтобы выходной файл выглядел следующим образом:
foo,45
bar,46
baz,57
, и я бы хотел, чтобы команда называла их 1-3 и 10-11 , в соответствии с документацией.
Я пытался
cut -c 1-3,10-11 file.txt
, но это не создает разделитель между двумя столбцами semanti c.
Я также мог бы попробовать :
awk '{print $1,$3}' fieldwidths="3 1 2 3 2" file.txt
, но для этого необходимо знать индексы столбцов semanti c, а не индексы символьных столбцов. Учитывая, что есть тысячи столбцов, а документация ссылается только на индексы символьных столбцов, это будет очень сложно. Чтобы понять, насколько это сложно, см. Документацию (около 25% пути вниз) ftp: //ftp.cdc.gov/pub/Health_Statistics/NCHS/Dataset_Documentation/DVS/periodlinked /LinkPE17Guide.pdf. Это только один из десятков похожих наборов данных, которые мне нужно прочитать.
Спасибо!