Как сжать все содержимое многострочного файла в одну строку?

У меня есть файл со многими тысячами (возможно, даже миллионами) строк, однако мне нужно, чтобы все содержимое было в одной строке, и все пробелы были удалены (там не должно быть пробелов, но они могут быть, и если они есть, их следует удалить). Как этого достичь?

Чтобы получить некоторый контекст, я получил вывод base64 для огромного файла, и теперь мне нужно передать его в другую команду, однако мне нужно передать его как одно огромное число, но так как файл состоит из нескольких строк, а не все в одной строке, я не могу передать его в программу, потому что он будет обрабатывать каждую строку как новое число, и мне нужно, чтобы все это рассматривалось как одна большая один.

Я использую Ubuntu GNOME 15.10 с GNOME 3.18, я надеюсь, что этого можно достичь с помощью простой команды и / или скрипта.

0
задан 10 April 2016 в 23:15

3 ответа

Более простой путь: использовать tr.

tr -d '[[:space:]]' <file1 >file2

(Используйте sponge если необходимо записать в тот же файл.)


Довольно легкий с Vim:

vim -Nesc '%s/\_s//g' +wq file

С awk, набор RS (разделитель записей) к пробелу и ORS (произведите разделитель записей) ни к чему:

awk -v RS='[[:space:]]' -v ORS= '1' foo

С GNU awk, можно сделать оперативное использование редактирования gawk -i inplace.

4
ответ дан 11 April 2016 в 09:15
  • 1
    попытайтесь выполнить следующие команды: sudo/etc/init.d/mysql перезапуск и затем sudo/etc/init.d/mysql запускаются. Если это doesn' t работа тогда пытаются соединить использование этой команды: корень mysql-h 127.0.0.1-P 3306-u-p < пароль для корня user> – cwithmichael 21 August 2017 в 09:52

AWK может сделать это цикличным выполнением все поля и использование printf "%s". Пример

cat /etc/passwd | awk '{for(i=1;i<=NF;i++) printf "%s",$i}'

выполненный Образец:

$ printf "to be or not to be\nthat is the question" | \         
> awk '{for(i=1;i<=NF;i++) printf "%s",$i}'
tobeornottobethatisthequestion
1
ответ дан 11 April 2016 в 09:15

Передайте его по каналу через этот жемчуг regex:

perl -p -e 's/[\n\r ]*//g'
4
ответ дан 11 April 2016 в 09:15
  • 1
    Спасибо за Ваш ответ, но это - все еще то же. Я мог запустить mysql, и я вижу, что он в порядке с пикосекунда-ef | grep mysql mysql 18067 1 0 00:21 ? 00:00:00 /usr/sbin/mysqld root 18242 12670 0 00:24 pts/7 00:00:00 grep --color=auto mysql , Но когда я пытаюсь удалить/произвести чистку/установить его или попытаться соединиться с mysql-h 127.0.0.1-P 3306... я все еще добираюсь ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded – piper 21 August 2017 в 11:25

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

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