Как я могу использовать команды с sudo без смены владельца файлов?

попробуйте настроить grep следующим образом:grep -Po '(?<= - )[^ ]*'

Думаю, это зависит от того, какая у вас система... -Po не работает на mac osx, но отлично работает на centos:

[rust@JBLGSMR001 ~]$ cat data.txt
2017-06-07-17:44:45.5903 tcp(6) - 192.168.80.12 58647 192.168.80.140 9999: 44 S [linux 2.2]
2017-06-07-17:44:45.5904 tcp(6) - 192.168.80.12 58647 192.168.80.140 9999: 44 S [linux 2.2]
2017-06-07-17:44:45.5905 tcp(6) - 192.168.80.12 58647 192.168.80.140 9999: 44 S [linux 2.2]
2017-06-07-17:44:45.5906 tcp(6) - 192.168.80.12 58647 192.168.80.140 9999: 44 S [linux 2.2]
2017-06-07-17:44:45.5907 tcp(6) - 192.168.80.12 58647 192.168.80.140 9999: 44 S [linux 2.2]
2017-06-07-17:44:45.5908 tcp(6) - 192.168.80.12 58647 192.168.80.140 9999: 44 S [linux 2.2]
2017-06-07-17:44:45.5909 tcp(6) - 192.168.80.12 58647 192.168.80.140 9999: 44 S [linux 2.2]
[rust@JBLGSMR001 ~]$ cat data.txt | grep -Po '(?<= - )[^ ]*' >> output.txt
[rust@JBLGSMR001 ~]$ cat output.txt
192.168.80.12
192.168.80.12
192.168.80.12
192.168.80.12
192.168.80.12
192.168.80.12
12
05.08.2019, 19:17
2 ответа

На самом деле вы не меняете владельца файла, а удаляете старый файл и создаете новый. Когда вы это сделаете, будет создан новый файл, принадлежащий uid создателя. Чтобы избежать этого, вы должны изменить файл на месте. Отредактируйте его с помощью текстового редактора, который сохраняет, перезаписывая исходный файл на месте. Или запустите свои команды sed с выводом во временный файл, а затем скопируйте временный файл поверх исходного файла.

2
27.01.2020, 19:54

Если вам нужно использовать sudoдля изменения файла, используйте его для переключения на нужного пользователя. Вам не нужно , чтобы переключиться на root, это просто значение по умолчанию. Итак, в вашем случае вы хотите сделать:

sudo -iu apache sed -i 's/old/new/g' archivos35.sh

Это запустит команду sedот имени пользователя apache.

30
27.01.2020, 19:54

Теги

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