Ваша проблема происходит из-за Вас, переименовал Вашего пользователя (mpatil
) корневой каталог к /home/algo
. Это вызывает это, некоторые приложения не могут прочитать свои конфигурации, потому что у Вас нет каталога /home/mpatil
больше. Проблема будет решена при переименовании каталога /home/algo
кому: /home/mpatil
. Можно сделать это со следующей командой: mv /home/algo /home/mpatil
.
Можно поменять местами stdout и stderr stream. см. следующий пример:
ps aux 3>&1 1>&2 2>&3 | grep init
Подробнее см. по этой ссылке .
-121--185972-Во-первых, есть проблема: вы не упомянули кодировку в вашем вопросе, что заставляет меня полагать, что вы не знаете, как это влияет на это. Кодировка символов определяет значение отдельных байтов. Это означает, что нам нужно начать с небольшого урока истории, и ответ на вопрос, легко это или нет, уже «нет».
Ваш пример технически не ASCII. Расширенные знаки, которые вы обсуждаете сначала, сделали свое появление в кодовой странице 437 IBM (известный различными именами такой как как CP437, OEM 437 и IBM437), но они не были частью чаще всего используемых интернет-кодировок (т.е. ISO 8859-1 иначе латинский 1) до , UTF-8 стал фактическим стандартом. UTF-8 вернул эти символы в виде Block Elements и Box-drawing Characters . Следует отметить, что упомянутые мною блоки Юникода содержат символы, которые изначально не присутствовали в CP437, что делает поддержку шрифта пятнистой.
С таким пониманием мы можем разбить это на два шага:
Как уже заявляли другие, невозможно определить, следует ли интерпретировать обычно используемые текстовые символы (то есть в основном что-либо на кодовой странице Latin-1, включая 7-битный набор ASCII) как художественные. Есть диапазоны символов, которые вы можете заинтересовать больше, чем обычно, из-за гораздо более высокой вероятности того, что они используются в искусстве.
Ради здравомыслия каждого, я предполагаю, что мы обсуждаем UTF-8 здесь. Рассекая приведенный пример, мы видим символы из следующих блоков Юникода:
Отсюда все зависит от реализации. Необходимо изучить каждый символ и определить, попадают ли они в интересующий вас блок Юникода. Делать это вручную без опыта может быть сложно, так как UTF-8 является многобайтовой кодировкой: это означает, что отдельные символы вне базового 7-битного набора ASCII представлены более чем одним байтом. Использование программного обеспечения, которое UTF-8 известно, значительно упростит это. Я не рекомендую использовать bash
в одиночку, как следует из названия вашего вопроса.
Обходной путь состоит в том, чтобы снять соответствующие строки и затем разделить их. Это означает, что file1
и file2
будут выглядеть следующим образом:
I need to buy apples.
I need to run the laundry.
I need to get the car detailed.
Это можно сделать с помощью комбинации grep
, perl
и sed
:
$ lines_to_ignore=$(grep -nFf file3 file2 | perl -pe 's|^(\d+):.*|$1s/.//g;|')
$ echo $lines_to_ignore
3s/.//g;
$ diff <(sed "$lines_to_ignore" file1) <(sed "$lines_to_ignore" file2)
$ echo $?
0
grep
, чтобы получить соответствующие строки (вместе с номерами строк) в file2
perl
, чтобы получить номера строк из вывода grep
и сделать из них команды sed ( Ns/.//g
удаляет каждый символ в строке N). sed
выполнения этих команд в файлах в diff
. Используйте опцию GREP, чтобы отфильтровать линию из файла
$ diff f1 f2
3c3
< I need to wash the dog.
---
> I need to wash the car.
$ diff <( grep -v -f f3 -x f1) <( grep -v -f f3 -x f2)
3d2
< I need to wash the dog.
, где
<()
- это синтаксис Bash для создания временного файла -x
Сопоставить целую ложь -F F3
Принять Patterm из файла F3 -V
Показать непревзойденный шаблон Хорошо, так что, возможно, это было пустой тратой времени, так как решение не имеет ничего общего с gnome-gmail или браузером по умолчанию, но я нашел ответ, так что я ставлю его здесь на случай, если кто-то еще сочтет это полезным.
На самом деле это так же просто, как щелкнуть значок «double-diamond» в адресной строке хрома, в gmail и выбрать опцию «Разрешить хром открывать ссылки электронной почты».
http://www.thegooru.com/how-to-open-email-mailto-links-in-gmail/
-121--174884- Учитывая, что вы использовали awk
в вашем вопросе, вот еще одна альтернатива tr
и fmt
:
awk '{ for ( i = 1; i < NF; ++i ) print $(i); }' test.txt | while IFS= read -r var do echo processing: "$var" done
Обратите внимание, что, как и в случае fmt
и в отличие от tr
, awk
Здесь можно объединить diff
и combine
:
$ diff file1.txt <(combine file2.txt NOT file3.txt)
3d2
< I need to wash the dog.
Обновлено для отражения изменений в ОП.