Удалить пробел с конца строки в linux
У меня есть файл, в котором я хочу удалить пробел с конца строки. test.txt выглядит следующим образом (в конце строки есть пробел.
ath-miRf10005-akr
ath-miRf10018-akr
ath-miRf10019-akr
ath-miRf10020-akr
ath-miRf10023-akr
ath-miRf10024-akr
Я использовал sed 's/$\s//'
, но он не работает.
Ответы
Ответ 1
Используйте простой пробел *
или [:blank:]*
, чтобы удалить все возможные пробелы в конце строки:
sed 's/ *$//' file
Используя класс [:blank:]
, вы удаляете пробелы и вкладки:
sed 's/[[:blank:]]*$//' file
Обратите внимание, что это POSIX, поэтому совместим как с GNU sed, так и с BSD.
Для просто GNU sed вы можете использовать расширение GNU \s*
для соответствия пробелам и вкладкам, как описано в ответе BaBL86. См. Спецификации POSIX в Основные регулярные выражения.
Позвольте проверить его простым файлом, состоящим только из строк, двумя с пробелами и последним с вкладками:
$ cat -vet file
hello $
bye $
ha^I $ # there is a tab here
Удалите пробелы:
$ sed 's/ *$//' file | cat -vet -
hello$
bye$
ha^I$ # tab is still here!
Удалить пробелы и вкладки:
$ sed 's/[[:blank:]]*$//' file | cat -vet -
hello$
bye$
ha$ # tab was removed!
Ответ 2
Попробуйте следующее:
sed -i 's/\s*$//' youfile.txt
Ответ 3
sed -i 's/[[:blank:]]\{1,\}$//' YourFile
[: blank:] - это пробел, вкладка в основном и {1,}, чтобы исключить "нет места в конце" процесса подстановки (нет значительного влияния, если строка коротка, а файл мал)
Ответ 4
Если ваши строки точно такие, как вы их изображаете (без ведущих или встроенных пространств), следует также использовать
awk '{$1=$1;print}' file.txt
Ответ 5
Это может сработать для вас (GNU sed):
sed -ri '/\s+$/s///' file
Это ищет пробелы в конце строки и, если присутствует, удаляет его.
Ответ 6
Попробуйте использовать
cat kb.txt | sed -e 's/\s$//g'