Замените все случаи двух пробелов после конца предложения одним пробелом

Запуск ssh-keyscan -H github. com >> ~ / .ssh / known_hosts перед клонированием добавит ключ и предотвратит появление запроса.

Конечно, этот подход также уязвим для атаки MITM.

9
22.07.2016, 19:42
3 ответа

Ваша sed команда 's/^ $/^$/' не сделает того, что вы хотите. Она просто заменит все строки, содержащие один пробел, на строки, содержащие ^$.

В зависимости от того, какие символы обозначают конец предложения, вы можете сделать:

sed -e 's/\([.?!]\) \{2,\}/\1 /g' <file

Это заменит 2 или более пробелов после . , ? или ! только одним пробелом.

13
27.01.2020, 20:03
 sed 's/\.   */. /g' < file

замените точку, за которой следуют два или более пробелов, на точку, за которой следует одним пробелом.

12
27.01.2020, 20:03

Это то, что вы, возможно, ищете,

tr -s " " <filename

Образец,

$ echo "This is the output.  Hello Hello" | tr -s "[:blank:]"
This is the output. Hello Hello

Используя sed ,

$ echo "This is the output.  Hello Hello" | sed 's/\. \+/. /g'
$ echo "This is the output.  Hello Hello" | sed 's/\. \{1,\}/. /g'
This is the output. Hello Hello
7
27.01.2020, 20:03

Теги

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