Выполните сценарий оболочки, чтобы взять вывод файла и преобразовать его в формат Excel

У меня есть данные в двух различных названных файлах test1.txt и test2.txt, как:

ID : 1
Name: xxxx
Age: 33
Education: Mtech

ID: 2
Name: yyyy
Age: 22
Education: bsc

Я хочу распечатать эти строки с помощью сценария оболочки как это:

 1
 xxxx 
 33
 mtech
 2
 yyyy
 22
 bsc

и затем я хочу преобразовать этот вывод в формат Excel. Формат похож ниже:

 ID Name    Age Education
 1  xxx     33  mtech
 2  yyy     22  bsc

Как я могу преобразовать как это?

2
задан 2 March 2016 в 12:53

2 ответа

awk 'NR==1{print $1,$3,$5,$7}
          {print $2,$4,$6,$8}' FS='[\\n:] *' OFS='\t' RS='' t*.txt > out.tsv

gnumeric out.tsv    #  excel or libreoffice, whatever

И поскольку @kos представил, мы можем ssconvert он мир различных форматов...

ssconvert out.tsv out.tex
ssconvert out.tsv out.pdf  
1
ответ дан 2 December 2019 в 02:53

Использование Perl + ssconvertgnumeric пакет):

perl -F'\012' -00ane 'BEGIN {$, = ","; $\ = "\n"; print("ID,Name,Age,Education")} my @f; foreach(@F) {s/.*?: +//; push(@f, $_)} print(@f)' test1.txt test2.txt | ssconvert fd://0 output.xls

Чтения команды Perl test1.txt и test2.txt использование пустых строк как разделители записей и символы новой строки как разделители полей; это печатает заголовок (Id,Name,Age,Education) и для каждой записи и для каждого поля разделяет все перед первым символом после последовательности пробелов после первого : символ от каждого поля и печатают рекордные запятые использование как разделители полей и символ новой строки как разделители записей (т.е. это преобразовывает test1.txt и test2.txt к CSV):

% cat test1.txt
ID : 1
Name: xxxx
Age: 33
Education: Mtech

ID: 2
Name: yyyy
Age: 22
Education: bsc
% cat test2.txt
ID : 3
Name: xxxx
Age: 33
Education: Mtech

ID: 4
Name: yyyy
Age: 22
Education: bsc
% perl -F'\012' -00ane 'BEGIN {$, = ","; $\ = "\n"; print("ID,Name,Age,Education")} my @f; foreach(@F) {s/.*?: +//; push(@f, $_)} print(@f)' test1.txt test2.txt
ID,Name,Age,Education
1,xxxx,33,Mtech
2,yyyy,22,bsc
3,xxxx,33,Mtech
4,yyyy,22,bsc

ssconvert управляйте чтениями от STDIN, и преобразовывает файл в электронную таблицу Excel.

При установке gnumeric получить ssconvert не опция, Вы могли использовать просто команду Perl и импортировать CSV в Excel / безотносительно:

perl -F'\012' -00ane 'BEGIN {$, = ","; $\ = "\n"; print("ID,Name,Age,Education")} my @f; foreach(@F) {s/.*?: +//; push(@f, $_)} print(@f)' test1.txt test2.txt >output.csv
2
ответ дан 2 December 2019 в 02:53

Другие вопросы по тегам:

Похожие вопросы: