$ sed -r 's/.* ([^ ]+\.[^ ]+).* ([^ ]+)$/\1 \2/' orange
orange.5678 you
-r
использовать расширенные регулярные выражения s / old / new
replace old
с новым
.*
любое количество любых символов (некоторые символы)
за исключением некоторых символов
для ссылки позже при замене [^] +
некоторые символы, не являющиеся пробелом \.
буквальная точка $
конец строки \ 1
обратная ссылка на сохраненный шаблон , поэтому s /.* ([^] + \. [^] +) . * ([^] +) $ / \ 1 \ 2 /
означает соответствие чему-либо в строке вплоть до пробела, предшествующего некоторым непробельным символам до .
, а затем несколько непробельных символов после него (сохраняя эти символы по обе стороны от .
), затем сопоставьте любые символы и сохраните последний набор непробельных символов в строке и замените весь совпадают с двумя сохраненными шаблонами, разделенными пробелом
Причина в том, что файлы, указанные как root
, принадлежат пользователю root
и, следовательно, не могут быть изменены любым другим пользователем, например ubuntu
в вашем случае.
Чтобы ваша программа могла записывать файлы, перечисленные как root
, вам необходимо изменить владельца этих файлов с помощью команды chown
.
Шаги:
root
. cd
в папку с вашими файлами chown ubuntu:ubuntu *.json
ИЛИ просто выполнить:
cd <to the directory>; sudo chown ubuntu:ubuntu *.json
Надеюсь, это поможет!