Записи, которые вас беспокоят, генерируются сценариями /etc/grub.d/10 _linux (комментарии в /boot/grub.cfg показывают, где генерируются различные части файла ). К сожалению, этот скрипт не допускает никакой конфигурации или настройки из коробки.
Единственное, что вы можете сделать, это вручную отредактировать /etc/grub.d/10 _linux. Однако в целом это кажется плохой идеей, поскольку это сложный сценарий, и редактирование сценария нарушит простые обновления вашей системы.
Попробуйтеawk
awk 'NR==1||FNR>1' GFP*.csv > output.csv
Это напечатает все строки каждого файла, начиная со второй строки(FNR>1
означает, что на -строку файла -счетчик больше одного )для подавления повторяющихся заголовков, но обязательно напечатайте самую первую строку встретил (NR==1
), который является строкой заголовка первого файла.
Затем вывод перенаправляется в файл output.csv
.
Синтаксис использует тот факт, что awk
будет печатать текущую строку, если условие, найденное за пределами блока правил ({...}
), истинно. В этом случае мы можем вообще опустить блоки правил, поскольку на самом деле мы не хотим редактировать, а только фильтровать входные файлы.
Используя perl
, мы явно закрываем дескриптор файла при каждом условии eof, чтобы сбросить счетчик строк. Для абсолютной первой строки мы используем любую скалярную переменную $nr и предварительно увеличиваем ее.
perl -lne 'print if
++$nr==1||$.>1;
eof && close(ARGV);
' GFP_*.CSV > total.csv
Использование GNU sed
с параметром -s
разделенных потоков, который обрабатывает файлы по отдельности.
{
head -n 1 "$(printf '%s\n' GFP_*.CSV |head -n 1 -)"
sed -se 1d GFP_*.csv
} > total.csv
Прежде всего, мы создадим наш заголовочный файл один раз и оставим его в той же папке, что и остальные CSV-файлы
head -qn 1 GFP_20210609.csv > common.header
common _header.csv содержит 1-ю строку любого выбранного вами CSV-файла (на основании того, что вы сказали, все CSV-файлы имеют одинаковый заголовок ). Вы должны создать этот файл один раз и оставить его для дальнейшего использования в том же каталоге.
Командаhead
выводит первые n строк текстового файла, что равно «1» в нашем случае файла заголовка.
tail
выводит последние n строк текстового файла. Начиная с «1», мы будем игнорировать первую строку во всех CSV-файлах, так как мы хотим избежать повторения заголовков.
Дополнительный параметр-q(тихий )как в head
, так и в tail
предотвращает вывод дополнительной информации, которая нам не нужна в конечном файле.
Следующая строка — исходный код вашего скрипта:
cat common.header > FINAL.csv && tail -qn 1 GFP_*.csv >> FINAL.csv
Обе команды cat
и tail
объединены с &&
, что означает, что tail
будет запускать только , если команда cat
выполнена успешно.
(*)Примечание:tail -qn 1...
также может быть записано как tail -q -n 1...
, и это то же самое.