Можно попробовать инструмент sed
, как показано :Основная идея заключается в том, что в качестве первого шага мы поглощаем файл в пространстве шаблонов.
Затем мы распределяем первые 6 элементов, затем распечатываем эту часть и перемещаем эту линию в конец пространства шаблона (после отпиливания напечатанной части ).
Промойте и повторите описанный выше процесс для теперь ведущей линии в пространстве шаблона.
Этот процесс останавливается, когда в пространстве шаблона остается только последняя часть последней строки, и в этот момент мы просто позволим sed
распечатать ее после удаление ведущей новой строки.
Части представляют собой 6 полей csv, а общее количество полей в каждой строке равно целое число, кратное 6, и каждая строка имеет одинаковое количество полей.
sed -e '
$!{
s/$/,/
N;s/^/\n/;D
}
s/^\([^,]*,\n\{0,1\}\)\{6\}/&\n/
s/\n\n/\n/
s/,\n/\n/
P
y/\n_/_\n/
s/^[^_]*_//
s/^\([^_]*\)_\(.*\)/_\2_\1/
y/\n_/_\n/
/\n.*\n/D
s/.*\n//
' yourfile.csv
A1,B1,C1,D1,E1,F1
G1,H1,I1,J1,K1,L1
A2,B2,C2,D2,E2,F2
G2,H2,I2,J2,K2,L2
Судя по всему, у меня были установлены какие-то версии MariaDB и какие-то версии MySQL, и Ubuntu уже не могла все это расшифровать. Возможно, у меня была более старая версия базы данных MySQL, и я пытался запустить более новую версию сервера. Было не совсем ясно, что за путаница происходила на сервере. Но чтобы исправить ситуацию, я удалил буквально все MySQL :
.PKGS="mysql-server mariadb-client mariadb-server-10.0 mariadb-common"
sudo apt-get check
sudo apt remove $PKGS
sudo apt purge $PKGS
sudo apt autoremove
sudo apt-get --purge remove "mysql*"
sudo rm -rf /etc/mysql/
sudo updatedb
locate mysql
sudo rm -rf /etc/apparmor.d/abstractions/mysql
sudo rm -rf /etc/apparmor.d/cache/usr.sbin.mysqld
sudo rm -rf /etc/default/mysql
sudo rm -rf /etc/systemd/system/mysqld.service
sudo rm -rf /home/dan/.mysql_history
sudo rm -rf /var/cache/apt/archives/libmysqlclient18_1%3a10.1.41+maria-1~bionic_amd64.deb
sudo rm -rf /var/cache/apt/archives/libmysqlclient20_5.7.27-0ubuntu0.18.04.1_amd64.deb
sudo rm -rf /var/cache/apt/archives/mysql-client-5.7_5.7.27-0ubuntu0.18.04.1_amd64.deb
sudo rm -rf /var/cache/apt/archives/mysql-client-core-5.7_5.7.27-0ubuntu0.18.04.1_amd64.deb
sudo rm -rf /var/cache/apt/archives/mysql-common_1%3a10.1.41+maria-1~bionic_all.deb
sudo rm -rf /var/cache/apt/archives/mysql-server-5.7_5.7.27-0ubuntu0.18.04.1_amd64.deb
sudo rm -rf /var/cache/apt/archives/mysql-server-core-5.7_5.7.27-0ubuntu0.18.04.1_amd64.deb
sudo rm -rf /var/cache/apt/archives/mysql-server_5.7.27-0ubuntu0.18.04.1_all.deb
sudo rm -rf /var/lib/mysqld
sudo rm -rf /var/lib/systemd/deb-systemd-helper-enabled/mysql.service
sudo rm -rf /var/lib/systemd/deb-systemd-helper-enabled/mysqld.service
На данный момент в моей системе не было никаких следов MariaDB или MySQL. Теперь я смог установить MariaDB 10.1 начисто:
$ apt-cache policy software-properties-common
software-properties-common:
Installed: 0.96.24.32.11
Открытый ключ репозитория MariaDB, используемый системой управления пакетами:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
добавить репозиторий MariaDB 10.1 в Ubuntu:
sudo sh -c "echo 'deb https://mirrors.evowise.com/mariadb/repo/10.1/ubuntu '$(lsb_release -cs)' main' > /etc/apt/sources.list.d/MariaDB101.list"
Затем установите mariadb:
sudo apt-get update
sudo apt-get install mariadb-server mariadb-client
---Решение для Mac OS X---
Итак, мой предыдущий ответ касался Linux, в частности Ubuntu. Для полноты картины для тех, кто сталкивается с проблемами совместимости mysql/mariadb, я также предоставляю решение для OSX :
.$ brew list --versions mariadb
mariadb 10.3.12
$ brew uninstall mariadb
Uninstalling /usr/local/Cellar/mariadb/10.3.12... (658 files, 174.4MB)
$ brew doctor
$ brew cleanup # should you have some broken symlinks somewhere
$ brew info mariadb
Conflicts with:
mariadb-connector-c
mysql
mytop
percona-server
$ brew list --versions mariadb-connector-c
$ brew list --versions mysql
$ brew list --versions mytop
$ brew list --versions percona-server
$ brew search mariadb
mariadb@10.1 mariadb@10.2 mariadb@10.3
Пока НЕ устанавливайте mariadb@10.1! Даже после того, как вы удалите предыдущую установку, brew оставит каталог данных в покое во время следующей установки, чтобы убедиться, что он не удалит данные, созданные пользователем -. Если вы уверены, что у вас нет важных данных в вашей базе данных MySQL на этом компьютере (либо из установленного Homebrew -, либо из другой установки MySQL ), тогда да, удалите оба каталога данных и my.cnf. конфигурация:
rm -rf /usr/local/var/mysql
rm -rf /usr/local/etc/my.cnf
rmdir /usr/local/etc/my.cnf.d
rm -rf /usr/local/etc/my.cnf.default
rm -rf /usr/local/etc/my.cnf.default.default
Теперь можно установить старую версию:
$ brew install mariadb@10.1
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.
MySQL is configured to only allow connections from localhost by default
To connect:
mysql -uroot
mariadb@10.1 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.
If you need to have mariadb@10.1 first in your PATH run:
echo 'export PATH="/usr/local/opt/mariadb@10.1/bin:$PATH"' >> ~/.bash_profile
For compilers to find mariadb@10.1 you may need to set:
export LDFLAGS="-L/usr/local/opt/mariadb@10.1/lib"
export CPPFLAGS="-I/usr/local/opt/mariadb@10.1/include"
For pkg-config to find mariadb@10.1 you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/mariadb@10.1/share/pkgconfig"
To have launchd start mariadb@10.1 now and restart at login:
brew services start mariadb@10.1
Or, if you don't want/need a background service you can just run:
/usr/local/opt/mariadb@10.1/bin/mysql.server start
Прочтите заключительные замечания по установке! вам нужно будет добавить $PATH к mariadb@10.1 в ваш профиль.bash _(, если он загружается при инициализации оболочки ).