Добавьте пространство перед последним символом в переменной

Решение Python:

#!/usr/bin/python3

#cycle.py

old_server = 'avocado'
new_servers = ['beet','banana','cherry','tomato']
replacement_count = 0 

with open('example.txt') as file:
    #cycle through file
    for line in file:
        if old_server in line:
            replacement_count += 1 #increment counter to cycle through new servers
            #print string with old server replaced with new
            print(line.strip().replace(old_server,new_servers[replacement_count%3],1))
        else:
            #print existing line if old server wasn't found
            print(line.strip())

С вашим входным файлом как example.txt , это дает результат:

apple port1 username password IPAddress TCP
banana port2 username password IPAddress TCP
beet port3 username password IPAddress TCP
apple port4 username password IPAddress TCP

banana port1 username password IPAddress TCP
tomato port2 username password IPAddress TCP
cherry port3 username password IPAddress TCP
peach port4 username password IPAddress TCP
beet port5 username password IPAddress TCP
banana port6 username password IPAddress TCP

strawberry port1 username password IPAddress TCP
strawberry port2 username password IPAddress TCP
strawberry port3 username password IPAddress TCP

cherry port1 username password IPAddress TCP
lemon port2 username password IPAddress TCP
strawberry port3 username password IPAddress TCP
beet port4 username password IPAddress TCP
2
05.12.2018, 21:19
4 ответа

Версия, которая должна работать в любой оболочке POSIX, а не толькоbash:

printf '%s\n' "${a%?} ${a#"${a%?}"}"

Дополнительные кавычки внутри ${a#...}предназначены для защиты от специальных символов из переменной:

$ a='10*M'; printf '%s\n' "${a%?} ${a#"${a%?}"}"
10* M

Без них второе раскрытие переменной превратилось бы в ${a#10*}, а вместо этого было бы отображено 10* *M.

2
27.01.2020, 22:02

Вот пример Sed, который работает с переменной:

q=242M
sed 's/.$/ &/' <<eof
$q
eof
0
27.01.2020, 22:02

Чисто в оболочке:

var=${var:0:-1}' '${var: -1:1}

Например:

$ var=jeff
$ var=${var:0:-1}' '${var: -1:1}
$ printf '%s\n' "$var"
jef f
0
27.01.2020, 22:02

Если другой ответ не работает (например. в macOS )вы также можете попробовать

a="${a%?} ${a: -1}"

который объединяет a без последнего символа , пробел и последний символ a .

1
27.01.2020, 22:02

Теги

Похожие вопросы