Sed для удаления пробелов

Кто-либо знает, как использовать Sed для удаления всех пробелов в текстовом файле? Я приют, пытаясь использовать "d", удаляет команду, чтобы сделать так, но, может казаться, не понимает это

28
задан 17 October 2014 в 00:11

3 ответа

Можно использовать это для удаления всех пробелов в file:

 sed -i "s/ //g" file
7
ответ дан 16 November 2019 в 11:35

Какое "пространство"?

Для "удаления всех пробелов" может означать одну из разных вещей:

  1. удаляют все случаи пробела, кодируют 0x20.
  2. удаляют все горизонтальное пространство, включая горизонтальный символ табуляции, "\t"
  3. удаляют весь пробел, включая новую строку, "\n" и другие

правильный инструмент для задания

, Если sed это не требование по некоторой скрытой причине, лучше используйте правильный инструмент для задания.

команда tr имеет основное использование в переводе (отсюда имя "TR") список символов к списку других символов. Как угловой случай, это может перевести в пустой список символов; опция -d (--delete) удалит символы, которые появляются в списке.

список символов может использовать классы символов в [:...:] синтаксис.

  1. tr -d ' ' < input.txt > no-spaces.txt
  2. tr -d '[:blank:]' < input.txt > no-spaces.txt
  3. tr -d '[:space:]' < input.txt > no-spaces.txt

При настаивании sed

С sed, [:...:] синтаксис для классов символов должен быть объединен с синтаксисом для наборов символов в regexps, [...], приведении к несколько запутывающему [[:...:]]:

  1. sed 's/ //g' input.txt > no-spaces.txt
  2. sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
  3. sed 's/[[:space:]]//g' input.txt > no-spaces.txt
35
ответ дан 16 November 2019 в 11:35

возможно, слишком поздно, но sed использует регулярное выражение в качестве входных данных. '\s' - это выражение всех пробелов. Таким образом, sed s/'\s'//g должен выполнить эту работу. ура

3
ответ дан 16 April 2020 в 05:34

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

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