программа sed удалить все цифры 0-9, которые происходят после периода



У меня есть



sed -e '/^ *[0-9]+ *$/d' <oldtextfile >newtextfile


...который я использую для текста, скопированного и вставленного из PDF-файлов, чтобы удалить номера страниц. Тем не менее, мне также нужно удалить номера снос, поэтому мне нужно изменить выше sed однострочный, чтобы сделать это, удалив любые цифры, которые происходят после периода, и, к сожалению, у меня очень мало терпения для sed. Кто-нибудь может мне помочь?

735   5  

5 ответов:

sed 's/\.[0-9]*/./g'
Это, вероятно, не делает того, что вы хотите сделать, поэтому скажите мне более точно, что вы хотите сделать.

В любом случае в Windows sed требуется escape, чтобы распознать + как модификатор -\+. Я боролся с этим кучу раз и только сейчас обнаружил это отсюда: http://www.gnu.org/software/sed/manual/sed.html#Regular-Expressions

Таким образом, вы можете использовать решение джеффтнца следующим образом:
C:\Users\Me>cat test.txt | sed "s/\.[0-9]\+//g"

Я на windows, с некоторой версией sed, которая может быть не совсем стандартной, но вот что я сделал:

cat test.txt | sed "s/\.[0-9][0-9]*//g"

(мой седьмой не признают + за выражение)

C:\Users\Me>cat test.txt
Hello, this is a file
with some .2346 stuff I want to remove.

.this stuff I dont.

What about some more: .99123how's that?

Normal number: 1234

C:\Users\Me>cat test.txt | sed "s/\.[0-9][0-9]*//g"
Hello, this is a file
with some  stuff I want to remove.

.this stuff I dont.

What about some more: how's that?

Normal number: 1234

Поскольку вы не привели никакого примера ввода, мне придется предположить худший сценарий, в котором у вас есть числа, вложенные между буквами, и вы хотите сохранить буквы.

Пример: foo123.bar465baz789qux

В этом случае я думаю, что awk будет лучшим инструментом

awk -F'.' '{gsub("[[:digit:]]","",$2)}1' OFS='.' oldtextfile > newtextfile

Доказательство концепции

$ echo "foo123.bar456baz789qux" | awk -F'.' '{gsub("[[:digit:]]","",$2)}1' OFS='.'
foo123.barbazqux

Я знаю, что этому миллион лет, но очень короткий ответ:

cat yourfile.txt| |tr -d "[0-9]" > newfile.txt

Comments

    Ничего не найдено.