Если вам нужны полные урлы в каждой строке, а не подстроки, вы можете использовать comm
comm -23 <(sort -u fileA) <(sort -u fileB)
Объяснение:
comm ожидает сортированный вход, поэтому мы сначала сортируем и уникализируем 2 файла (sort -u file)
.
Далее - используем подстановку процесса, чтобы передать вывод sort -u
как "файл" в comm, поскольку comm ожидает файлы: comm <() <()
.
Last - подавить столбцы 2 (строки, уникальные для файла B) и 3 (строки, общие для обоих файлов), чтобы вывести только строки в столбце 1 (строки, уникальные для файла A).
sed 's/\.[[:space:]]\{1,\}/. /g'
Заменит точку (, совпадающую с \.
или [.]
. Помните, что .
соответствует любому символу ), за которым следует один или несколько пробелов.([[:space:]]
является стандартным эквивалентом\s
)с .
с двумя пробелами.
Вы также можете сделать это для !
и ?
:
sed 's/\([.!?]\)[[:space:]]\{1,\}/\1 /g'
В последних версиях GNU sed
вы можете сократить его до:
sed -E 's/([.!?])\s+/\1 /g'
Или сperl
:
perl -lne 's/[.!?]\K\s+/ /g'
[[:space:]]
и \s
соответствуют любому пробельному символу (, хотя с perl
это ограничено символами ASCII ). Это включает в себя символы CR, которые встречаются в конце строк в текстовых файлах MS -DOS, но в остальном обычно не используются в качестве пробелов. Таким образом, эти команды могут привести к нарушению разделителей строк MS -DOS, если они применяются к файлам, отформатированным MS -DOS.
Вместо [[:space:]]
/\s
вы можете использовать [[:blank:]]
/\h
, которые не включают CR (\h
, поддерживается perl
, но не GNUsed
).
Допустим, ваш текст сохранен в файле с именем «файл», тогда вы используете awk
следующим образом
cat file
this is OK: Turn the knob. Push the \u201con\u201d button. This is not: Turn the knob. Push the \u201con\u201d button.
awk '$1=$1' OFS=" " file
или sed
следующим образом:
sed -E "s/[[:space:]]+/ /g" file