Если вы хотите удалить первые 2 байта, вы можете попробовать:
dd if=orginal_file of=new_file ibs=2 skip=1
Это выведет new_file
с пропущенными первыми 2 байтами.
$ sed 's/\>[[:blank:]]\{1,\}/ /g' file
This is an indented paragraph. The indentation should not be changed.
This is the second line of the paragraph.
Выражение, которое я использовал, соответствует одному или нескольким[[:blank:]]
(пробелам или табуляциям)после слова и заменяет их одним пробелом. \>
соответствует границе нулевой ширины -между символом слова -и символом не -слова -.
Это было протестировано с исходным кодом OpenBSD sed
, но я думаю, что он должен работать и с GNU sed
. GNU sed
также использует \b
для сопоставления границ слов.
Вы также можете использовать sed -E
, чтобы сократить это до
sed -E 's/\>[[:blank:]]+/ /g' file
Опять же, если \>
не работает для вас с GNU sed
, используйте вместо этого \b
.
Обратите внимание, что, хотя приведенный выше пример правильно сортирует текст вашего примера, он не совсем работает для удаления пробелов после знаков препинания, как после первого предложения в
This is an indented paragraph. The indentation should not be changed.
This is the second line of the paragraph.
Для этого подойдет немного более сложный вариант:
$ sed -E 's/([^[:blank:]])[[:blank:]]+/\1 /g' file
This is an indented paragraph. The indentation should not be changed.
This is the second line of the paragraph.
Это заменяет любой непустой символ -, за которым следует один или несколько пустых символов, на непустой символ -и один пробел.
Или, используя стандартнуюsed
(и очень маленькую оптимизацию, которая будет выполнять замену, только если есть два или более пробела/табуляции после не -пробела/табуляции ),
$ sed 's/\([^[:blank:]]\)[[:blank:]]\{2,\}/\1 /g' file
This is an indented paragraph. The indentation should not be changed.
This is the second line of the paragraph.
POSIXly:
sed 's/\([^[:space:]]\)[[:space:]]\{1,\}/\1 /g; s/[[:space:]]*$//'
Который заменяет любую последовательность из одного или нескольких пробельных символов, следующих за не -пробелом, этим не -пробелом и одним единственным символом SPC, а также удаляет конечные пробельные символы, которые закрывают пустые строки и строки с замыкающими пробел (включая CR в конце строк, поступающих из текстовых файлов Microsoft ).