Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash脚本中使用sed替换文件中的文本_Bash_File_Sed - Fatal编程技术网

在bash脚本中使用sed替换文件中的文本

在bash脚本中使用sed替换文件中的文本,bash,file,sed,Bash,File,Sed,在Mac OS X上,管理员可以通过修改位于以下位置的文件来解锁其他管理员的屏幕保护程序: /etc/pam.d/screensaver 我需要一个简单的命令来更改这个文件(我的脚本正在执行许多其他操作,并且我已经以sudo的身份运行bash脚本)。这可能已经被更改了,所以我需要测试字符串,如果找到,则进行更改 文件中有字符串 帐户必需pam_组。因此,无警告拒绝组=管理员,车轮安全 我需要把这个换成 帐户足够pam\u组。因此无警告拒绝组=管理员,车轮ruser故障\u安全 理想情况下,我希望

在Mac OS X上,管理员可以通过修改位于以下位置的文件来解锁其他管理员的屏幕保护程序:
/etc/pam.d/screensaver

我需要一个简单的命令来更改这个文件(我的脚本正在执行许多其他操作,并且我已经以sudo的身份运行bash脚本)。这可能已经被更改了,所以我需要测试字符串,如果找到,则进行更改

文件中有字符串

帐户必需pam_组。因此,无警告拒绝组=管理员,车轮安全

我需要把这个换成

帐户足够pam\u组。因此无警告拒绝组=管理员,车轮ruser故障\u安全

理想情况下,我希望报告更改是必要的,还是在脚本运行之前已经进行了更改

我也可以仅仅注释掉或删除这行,我更愿意详细地修改它。 这个TN详细说明了我在尝试什么

尝试使用sed命令:

sed -i 's/old-word/new-word/g' <filename>
sed-i's/old word/new word/g'

如果第一列(
$1
)是
账户
,第二列(
$2
)是
必需的
),第三列(
$3
)以字符串
pam_组开始。因此
,将第二列中的
必需的
替换为
足够的

awk'{If($2=“必需的”){sub(“必需”、“足够”);}print}文件名
对于awk解决方案

此外,“account required pam_group.so”或“account required pam_group.so”之间的空白可能会有所不同(可能是一个制表符或一个或多个空格字符),具体取决于我的团队成员过去可能对其进行过修改
$ cat foo
foo bar
account    required       pam_group.so no_warn deny group=admin,wheel ruser fail_safe
account    required       am_group.so no_warn deny group=admin,wheel ruser fail_safe
accoi    required       pam_group.so no_warn deny group=admin,wheel ruser fail_
foo bar

$ awk '$1~/^account$/ && $3~/^pam_group.so/ && $2~/^required$/ { $2 = "sufficient" }1' foo
foo bar
account sufficient pam_group.so no_warn deny group=admin,wheel ruser fail_safe
account    required       am_group.so no_warn deny group=admin,wheel ruser fail_safe
accoi    required       pam_group.so no_warn deny group=admin,wheel ruser fail_
foo bar