Unix Shell CRLF заменяется пробелом

Похоже, вы больше спрашиваете о том, что делать с неожиданными результатами системного обновления, а не о конкретном пакете. Это также звучит так, как будто вы спрашиваете, как смягчить этот сценарий в будущем. В соответствии с вашим вопросом я сосредоточусь на этих общих вопросах, а не на том, что конкретно связано с fontconfig.

В Arch Linux нет реального способа смягчить подобные проблемы, кроме как регулярно запускать pacman -Syuили pacman -Syyu. Затем, когда что-то пойдет не так, обычно легко вернуться к последней версии, которая работала, и дождаться более новой версии, которая устраняет проблему.

Например, недавнее обновление ядра привело к тому, что Wi-Fi на моем ноутбуке с Arch Linux перестал работать. Поскольку я регулярно обновляюсь, я смог вернуться к другому недавнему ядру, используя pacman -U /var/cache/pacman/pkg/<old-kernel>. Время от времени я пробую другое обновление, чтобы посмотреть, решит ли проблему более новое ядро.

По моему опыту, подобные проблемы случаются время от времени и обычно проходят через некоторое время. Возможно, это займет несколько месяцев. Просто продолжайте пытаться. А пока продолжайте использовать более старую версию.

Но когда вы не хотите ждать и получаете что-то загадочное в какой-то упаковке, есть несколько стратегий, которые вы можете использовать. Глядя на описанную вами проблему, я бы попробовал хотя бы пару подходов:

  • Поищите в Google что-то вроде "font config error" "XML or text declaration not at start of entity"или linux fonts "failed to write cache". (Я не собираюсь за вас гуглить. Вы просили стратегии, а не отдельные -инструкции для решения именно этой задачи;))
  • Заметив, что ошибка связана с новым пакетом fontconfig, упомянутым в обновлении, используйте asp, чтобы изучить способ сборки этого пакета:asp checkout fontconfig. В каталоге Trunk вы найдете PKGBUILD, который показывает, как был собран пакет. Это даст вам шаги, чтобы попытаться воспроизвести проблему. Это может помочь вам понять, что пошло не так. Или, если вы думаете, что в игре есть настоящая ошибка,это позволит вам формулировать вещи в терминах, которые будут иметь смысл выше по течению.

Действительно, когда дело доходит до перезагрузки, проблема со шрифтом не кажется мне причиной а не перезагрузки. И все же, что самое худшее может случиться? Нетрудно создать liveusb из последнего образа Arch, загрузиться в него, выполнить chroot в вашу основную систему и откатиться до более старой версии перед перезагрузкой.

Это еще одна стратегия решения проблем с Arch Linux :быть рядом с другими компьютерами, где вы можете взять iso и записать на USB для восстановления, если что-то пойдет не так;)

Изменить :Мне было предложено добавить к ответу, что еще одним хорошим местом для поиска являются примечания к исправлениям/пакетам на веб-сайте Arch Linux. Кроме того, в последнее время я редко бываю на форумах, но в прошлом я находил их ценными, так что это еще одно место, где можно попробовать.

1
31.05.2021, 06:09
3 ответа
$ perl -pe 'while(m/\r$/) { $_.= readline }; s/\r\n//g' rgram.txt
"ID","NAME","GROUP","Free Text"
"ID1","NAME1","GROUP1","Free Text1"

Это объединяет последовательные строки, заканчивающиеся на CRLF(\r$или \r\n), в одну длинную строку, затем удаляет все пары CRLF из этой строки и печатает ее.

Измененный ввод выводится на стандартный вывод, который можно перенаправить в другой файл. Или используйте опцию perl-i, чтобы изменить исходный файл в -место :

.
$ perl -i.bak -pe 'while(m/\r$/) { $_.= readline }; s/\r\n//g' rgram.txt

Это сохранит оригинал как rgram.txt.bak.

Я не сторонник использования -i, я бы предпочел просто перенаправить стандартный вывод, например, на rgram.new. Запись в stdout более универсальна (вы можете передать его в другие программы или использовать его в процессе или подстановке команд и т. д. )и меньше риск ошибки, которая испортит исходный файл.


rgram.txt— это текстовый файл, содержащий образцы данных, как описано в вопросе :

.
$ sed -n l rgram.txt 
"ID","NAME","GROUP","Free Text\r$
\r$
\r$
\r$
"$
"ID1","NAME1","GROUP1","Free Text1\r$
"$
1
28.07.2021, 11:27

Я вижу, вы хотите удалить последовательности CRLF, но оставить только LF без предшествующего CR, так что:

perl -pe 's/\r\n//' < input.txt > output.txt

или:

gawk -v RS='\r\n' -v ORS= 1 < input.txt > output.txt
0
28.07.2021, 11:27
sed 's/"$//' rgram.csv | sed 's/$/"/' | sed '/^"$/d' > rgram.new.csv

Сначала я удалил из файла последний символ ", затем добавил его обратно, а затем удалил строку, начинающуюся с ".

1
28.07.2021, 11:27

Теги

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