Разрешение на запись также означает разрешение на удаление, вот как:
Если пользователь должен иметь разрешение на запись, он также может «удалить» файл, записав в файл один байт и, таким образом, удалив все остальное содержимое этого файла. Самба никак не может обнаружить ОС и на ее основе дать определенные разрешения.
Чтобы изменить не -пустые символы перед концом строки в строке 2, вы можете использовать
sed -i'' -e '2{s/[^[:blank:]]*$/'"$(cat subfile.txt)"'/;}' filetobechanged.txt
Опция -i''
редактирует файл в -месте (GNU/BSD sed ). Ваше слово в subfile.txt
может не содержать символов /
, иначе вам придется замените /
в команде символом, отсутствующим в слове (, например. @
или ,
).
Если вы не заботитесь о сохранении пробелов между полями, это будет работать с использованием любого awk в любой оболочке на каждом компьютере UNIX и с любыми символами в любом входном файле, поскольку он просто выполняет буквальное присваивание строки:
awk 'NR==FNR{new=$0; next} NR==2{$2=new} 1' subfile.txt filetobechanged.txt
Если тебе не все равно, то:
awk 'NR==FNR{new=$0; next} NR==2{sub(/[^[:space:]]+$/,""); $0=$0 new} 1' subfile.txt filetobechanged.txt
Чтобы заменить X-е слово в Y-й строке с помощью GNU awk для соответствия 3-го аргумента():
awk -v x=5 -v y=3 '
NR==FNR { new=$0; next }
FNR==y {
match($0,"([[:space:]]*([^[:space:]]+[[:space:]]+){"x-1"})[^[:space:]]+(.*)",a)
$0 = a[1] new a[3]
}
1' subfile.txt filetobechanged.txt
напр.:
$ cat subfile.txt
[[[ \1 ~`!@#$%^&*()_-+={[}]|\:;"'<,>.?/ ]]]
$ cat filetobechanged.txt
Now is the winter of our discontent
Made glorious summer by this sun of York;
And all the clouds that lour'd upon our house
In the deep bosom of the ocean buried.
$ awk -v x=5 -v y=3 '
NR==FNR { new=$0; next }
FNR==y {
match($0,"([[:space:]]*([^[:space:]]+[[:space:]]+){"x-1"})[^[:space:]]+(.*)",a)
$0 = a[1] new a[3]
}
1' subfile.txt filetobechanged.txt
Now is the winter of our discontent
Made glorious summer by this sun of York;
And all the clouds [[[ \1 ~`!@#$%^&*()_-+={[}]|\:;"'<,>.?/ ]]] lour'd upon our house
In the deep bosom of the ocean buried.
Если вы хотите сделать что-то подобное с sed
, см.https://stackoverflow.com/q/29613304/1745001.