программа sed удалить все цифры 0-9, которые происходят после периода
У меня есть
sed -e '/^ *[0-9]+ *$/d' <oldtextfile >newtextfile
...который я использую для текста, скопированного и вставленного из PDF-файлов, чтобы удалить номера страниц. Тем не менее, мне также нужно удалить номера снос, поэтому мне нужно изменить выше sed однострочный, чтобы сделать это, удалив любые цифры, которые происходят после периода, и, к сожалению, у меня очень мало терпения для sed. Кто-нибудь может мне помочь?
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