удалить символ в последней строке, в которой появляется конкретное слово

Как предложил @Kusalananda, используйте агент ssh -. Поскольку вы уже входите в систему через ssh, простое создание экземпляра агента ssh -для выполнения скрипта должно работать нормально.

eval $(ssh-agent)
ssh-add 

Вы можете добавить несколько ключей ssh ​​к одному и тому же агенту ssh -. ssh-addдобавляет тот, который находится в расположении по умолчанию. Если ваша пара открытый/закрытый ключ не находится в расположении по умолчанию, добавьте их в команду ssh -add.

Также возможно запустить агент ssh -при входе в систему, если вы используете его вне этого скрипта.

редактировать :Я предполагаю, что завершение работы агента ssh -после завершения скрипта на удаленном сервере — хорошая идея, особенно. если кто-то еще получил root-доступ, можно прочитать ваш пароль. Если вы хотите получить полностью безопасное решение, ознакомьтесь с этой статьей .

-5
25.12.2019, 05:18
5 ответов

С GNU sed и tac:

tac bad.json | sed '0,/"topic"/s/,$//' | tac

Если в конце строки есть пробелы, измените шаблон на,[[:blank:]]*$

2
28.01.2020, 05:20

Выполнено методом Python

 #!/usr/bin/python
import re
k=re.compile(r',$')
t=open('filename','r')
l=[]
for i in t:
    l.append(i.strip())
for h in range(0,len(l),1):
    if (h <15):
        print l[h]
    else:
        print re.sub(k,"",l[h])

выход

{"topic":"life_is_hard","partition":84,"replicas":[1006,1003]},
{"topic":"life_is_hard","partition":85,"replicas":[1001,1004]},
{"topic":"life_is_hard","partition":86,"replicas":[1002,1005]},
{"topic":"life_is_hard","partition":87,"replicas":[1003,1006]},
{"topic":"life_is_hard","partition":88,"replicas":[1004,1001]},
{"topic":"life_is_hard","partition":89,"replicas":[1005,1002]},
{"topic":"life_is_hard","partition":90,"replicas":[1006,1004]},
{"topic":"life_is_hard","partition":91,"replicas":[1001,1005]},
{"topic":"life_is_hard","partition":92,"replicas":[1002,1006]},
{"topic":"life_is_hard","partition":93,"replicas":[1003,1001]},
{"topic":"life_is_hard","partition":94,"replicas":[1004,1002]},
{"topic":"life_is_hard","partition":95,"replicas":[1005,1003]},
{"topic":"life_is_hard","partition":96,"replicas":[1006,1005]},
{"topic":"life_is_hard","partition":97,"replicas":[1001,1006]},
{"topic":"life_is_hard","partition":98,"replicas":[1002,1001]},
{"topic":"life_is_hard","partition":99,"replicas":[1003,1002]}
0
28.01.2020, 05:20

Используя GNU sedв режиме расширенного регулярного выражения -r, мы можем сделать это следующим образом:

sed -ri -e '
   /"topic"/{
      x;1!p;ba
   }
   H;1h;:a;$!d;g
   //s/^([^\n]+),(\n|$)/\1\2/
' file

Основная идея состоит в том, чтобы собрать строки, начинающиеся с "topic", содержащие строку к следующему (, как бы дальше он ни находился )в трюмном пространстве. тогда когда мы, в конце концов, придем к концу, мы удалим ,с конца строка (=> строка "тема" была последней строкой )или первой новой строкой (=> "тема" была последней в файле, но за ней следовала еще не -тема строки, прежде чем мы нажмем eof.)

1
28.01.2020, 05:20

Вот так:

sed -i '${s/,[[:blank:]]*$//}' file

Эта команда заменяет файл на лету .

1
28.01.2020, 05:20

команда

sed '$s/,$//g' filename

выход

{"topic":"life_is_hard","partition":84,"replicas":[1006,1003]},
{"topic":"life_is_hard","partition":85,"replicas":[1001,1004]},
{"topic":"life_is_hard","partition":86,"replicas":[1002,1005]},
{"topic":"life_is_hard","partition":87,"replicas":[1003,1006]},
{"topic":"life_is_hard","partition":88,"replicas":[1004,1001]},
{"topic":"life_is_hard","partition":89,"replicas":[1005,1002]},
{"topic":"life_is_hard","partition":90,"replicas":[1006,1004]},
{"topic":"life_is_hard","partition":91,"replicas":[1001,1005]},
{"topic":"life_is_hard","partition":92,"replicas":[1002,1006]},
{"topic":"life_is_hard","partition":93,"replicas":[1003,1001]},
{"topic":"life_is_hard","partition":94,"replicas":[1004,1002]},
{"topic":"life_is_hard","partition":95,"replicas":[1005,1003]},
{"topic":"life_is_hard","partition":96,"replicas":[1006,1005]},
{"topic":"life_is_hard","partition":97,"replicas":[1001,1006]},
{"topic":"life_is_hard","partition":98,"replicas":[1002,1001]},
{"topic":"life_is_hard","partition":99,"replicas":[1003,1002]}
0
28.01.2020, 05:20

Теги

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