Linux sed - поиск подстановочной строки без пробелов в ней

для равномерного форматирования столбцов вы можете использовать awk:

awk '{ for(i=1;i <= NF; i++) { printf "%-7s", $i } print "" }' < input > output
0
08.06.2017, 13:38
2 ответа

Используйте классы символов с отрицанием ([^ ]или [^[:space:]]), как показал Роман, или инвертируйте соответствие, как показано ниже . Какой из них лучше, зависит от окружающей конструкции.

$ cat foo.txt
with space
spaceless
$ sed '/ /d'  < foo.txt     # (d)elete the line on match
spaceless
$ sed -n '/ /!p' < foo.txt  # (p)rint if the pattern does not (!) match
spaceless
1
28.01.2020, 02:16

Да, это возможно.

echo "One too many" | sed -n '/^[^[:space:]]*$/p'

Приведенная выше команда ничего не возвращает


echo "FredSmith" | sed -n '/^[^[:space:]]*$/p'
FredSmith

В то время как последняя выводит FredSmith


  • [:space:] — класс символов POSIX для пробелов

  • /^[^[:space:]]*$/p — означает «печатать совпадение, если он содержит только непробельные символы [^[:space:]]" (используется класс символов negated)

4
28.01.2020, 02:16

Теги

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