У меня есть 2 файла CSV:
1234ABC.stats.csv
name,value1,value1
1234ABC.csv
value2,value2,value2
В обоих этих файлах всего 1 строка.
Оба они не имеют заголовка и находятся в одном каталоге без файлов других типов.
Как я могу добавить содержимое из второго файла в конец строки из первого?
желаемый результат:
name,value1,value1,value2,value2,value2
Спасибо, если у меня есть несколько файлов с похожими именами, как я могу использовать циклическую вставку?
Смотрите man paste
: все, что вам нужно сделать, это paste -d, file1 file2 file3 file4 file5 ... file10000
. Страницы руководств по инструментам Linux содержат множество информации. Их действительно удобно рассматривать.
(Редактировать исправил ошибку — ; $_
отсутствовал) Навскидку сделал бы
perl -e 'print join q(,), map { chomp; $_ } <>; print qq(\n)' *.csv
<>
— это список всех строк во всех входных файлах. chomp
удаляет символы новой строки, затем join
добавляет запятые.
Возможно, вам придется указать файлы вручную, а не просто использовать *.csv
, если порядок результатов отличается от желаемого.
Или вы можете сделать это вручную в текстовом редакторе :D.
Попробуйте awk-скрипт:
awk '{printf("%s",$0)}NR==FNR{printf(",")}' 1234ABC.stats.csv 1234ABC.csv
попробуй это:
paste -d, 1234ABC.stats.csv 1234ABC.csv
цикл по нескольким файлам в локальном каталоге
#!/bin/bash
for statsfile in *.stats.csv; do
paste -d, "$statsfile" "${statsfile//.stats/}" > "new_${statsfile//.stats/}"
done
Если бы у меня было несколько файлов с одинаковыми именами файлов, как я могу перебрать их с помощью вставки?
я расширил свое решение.
Вы ищете
paste
($ paste -d, file1 file2
)