Подтвердить что ты не робот

Удалить пробел с конца строки в linux

У меня есть файл, в котором я хочу удалить пробел с конца строки. test.txt выглядит следующим образом (в конце строки есть пробел.

ath-miRf10005-akr 
ath-miRf10018-akr 
ath-miRf10019-akr
ath-miRf10020-akr 
ath-miRf10023-akr
ath-miRf10024-akr 

Я использовал sed 's/$\s//', но он не работает.

4b9b3361

Ответ 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'