Как объединить несколько файлов данных в один большой файл данных?

Похоже, вы хотите получить все значения после : и соединить их с помощью пробела или табуляции

perl — это один из вариантов

$ perl -lne 'print join "\t",/:\h*\K[^ ]+/g' output
44.75TB 0.44TB  42.04TB 6.07%
  • /:\h*\K[^ ]+/g получит непробельные символы, которые присутствуют после : и необязательных горизонтальных пробелов.
    • используйте \H вместо [^ ], если разделение полей может содержать символы табуляции
  • join "\t", объединит совпавшие строки с табуляцией в качестве разделителя


Чтобы получить только числа

$ perl -lne 'print join "\t",/:\h*\K[\d.]+/g' output
44.75   0.44    42.04   6.07
  • предполагает, что числа состоят только из цифр и десятичной точки и не проверяют правильность, он будет соответствовать даже 1.324.4, ... etc, который следует после : и необязательных пробелов
0
10.03.2017, 16:16
4 ответа

Вы можете использовать цикл for:

for (( i=1; i<=N; i++ )); do cat file"$i".dat; done > bigfile.dat
0
28.01.2020, 02:25

Если все ваши входные файлы действительно соответствуют шаблону file, затем некоторое число, за которым следует .dat, то это объединит их все их вместе в bigfile.dat:

cat file*.dat >bigfile.dat
2
28.01.2020, 02:25

Ну, это зависит от того, сколько именно файлов и используемого соглашения об именах, но, учитывая ваш пример:

cat file[0-9].dat
content1
content2

Файлы (по отдельности):

cat file1.dat 
content1
cat file2.dat 
content2
2
28.01.2020, 02:25

Поэтому я полагаю, что они не названы так, как в вашем примере, иначе вы могли бы просто сделать

cat file*.dat > bigfile.dat

Итак, вам нужна какая-то схема, чтобы найти все ваши файлы, возможно, с помощью find. Например, если вы хотите объединить все файлы с .dat:

find /your/search/dir -name "*.dat" -exec cat {} \; >> bigfile.dat

Просто убедитесь, что вы не создаете bigfile.dat в каталоге поиска, иначе он будет найден по найти также , что не сработает.

1
28.01.2020, 02:25

Теги

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