для равномерного форматирования столбцов вы можете использовать awk:
awk '{ for(i=1;i <= NF; i++) { printf "%-7s", $i } print "" }' < input > output
Используйте классы символов с отрицанием ([^ ]
или [^[: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
Да, это возможно.
echo "One too many" | sed -n '/^[^[:space:]]*$/p'
Приведенная выше команда ничего не возвращает
echo "FredSmith" | sed -n '/^[^[:space:]]*$/p'
FredSmith
В то время как последняя выводит FredSmith
[:space:]
— класс символов POSIX для пробелов
/^[^[:space:]]*$/p
— означает «печатать совпадение, если он содержит только непробельные символы [^[:space:]]
" (используется класс символов negated)