Вы должны убедиться, что экранируете все непечатаемые -символы.
Хорошо
PS1="\[\e[36m\]\W ⇨ \[\e[m\] "
Плохо
PS1="\[\e[36m\]\W ⇨ [\e[m\] "
Вы можете использовать приведенную ниже команду, если последним символом может быть цифра, алфавит или любой символ после точки(.
).
sed "s/\..$//g" filename
awk '{gsub(/\..*/,"",$NF);print $0}' filename
Питон
#!/usr/bin/python
import re
k=re.compile(r'\..')
m=open('i.txt','r')
for i in m:
p=re.sub(k,"",i)
print p,
Вы хотите изменить только последнее поле, поэтому используйте инструмент, который может работать с полями, например awk
. В awk
переменная $NF
является последним полем, поэтому вы можете сделать:
awk '{sub(/\..*/,"",$NF)}1' l4 > l4_clean
Просто примените более конкретный шаблон регулярного выражения (для сопоставления чисел/цифр):
sed 's/\.[0-9]*$//' l4 > l4_clean