sed - удалить точку в конце строки - PullRequest
6 голосов
/ 30 ноября 2011

Я пытаюсь удалить точки в конце строки в текстовом файле. Некоторые строки имеют точки в конце, некоторые - нет:

$cat textfile
sometexthere.123..22.no_period
moretext_with_period.  **<-- remove this period**
no_period_here_either
period.   **<-- remove this period**

Я пробовал это, но, похоже, это не работает:

sed 's/\.$//g' textfile > textfile2

(GNU sed версия 4.2.1)

Спасибо

Ответы [ 4 ]

7 голосов
/ 30 ноября 2011

Это выстрел в темноте, но у меня была эта проблема раньше, когда я пытался смешать файлы Windows с файлами Linux.Windows добавляет дополнительные \r при каждом разрыве строки (в дополнение к стандартному \n). Вы пробовали использовать dos2unix?

[user@localhost ~]$ cat testfile
abc
def.
[user@localhost ~]$ sed 's/\.$//g' testfile
abc
def.
[user@localhost ~]$ dos2unix testfile
dos2unix: converting file testfile to UNIX format ...
[user@localhost ~]$ sed 's/\.$//g' testfile
abc
def
[user@localhost ~]$ 

Пример этого -

[user@localhost ~]$ cat temp.txt 
this is a text created on windows
I will send this to unix
and do cat command.

[user@localhost ~]$ cat -v temp.txt 
this is a text created on windows^M
I will send this to unix^M
and do cat command. 
3 голосов
/ 30 ноября 2011

Если вам нужна одна команда sed для этого без использования dos2unix, которая изменяет исходный файл на месте, вы можете сделать что-то подобное (может потребоваться GNU sed)

sed -E 's/\.(^M?)/\1/' testfile

Где вы вводите ^M в командной строке как Ctrl + V , за которым следует Ctrl + M .

Это удалит символ «.», За которым может следовать символ возврата каретки, и заменит CR, если он присутствовал в оригинале.

1 голос
/ 15 января 2013

седь / период [. | ] * $ // g 'ts.txt> ts1.txt

входной файл: sometexthere.123..22.no_period moretext_with_period.
no_period_here_either период.

выходной файл: sometexthere.123..22.no_ moretext_with_ no_period_here_either

0 голосов
/ 04 ноября 2015
sed -r 's/\\.$//' 

также должно работать для удаления последнего периода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...