欢迎各位兄弟 发布技术文章
这里的技术是共享的
在macOS 12上,sed
命令使用-i
参数时可能会报错,因为在macOS 12中,sed
命令的-i
参数需要指定一个备份扩展名。如果你想直接修改文件,而不需要备份,可以使用一个空字符串作为备份扩展名。
例如,你可以使用以下命令来在macOS 12上使用sed
命令直接修改文件:
sed -i '' 's/foo/bar/g' filename
在这个命令中,'s/foo/bar/g'
是你要执行的替换命令,而filename
是你要修改的文件名。如果你想备份原始文件,可以将''
替换为一个备份文件的扩展名,例如'.bak'
,这样原始文件的备份将被创建。
sed [option] 'AddressCommond' file.....
-n:--quiet, --silent静默模式 不再显示模式空间的内容(命令让它处理什么它就显示什么)
-n, --quiet, --silent
suppress automatic printing of pattern space
-i: --in-place直接修改原文件 (这个很危险,需谨慎)
-e SCRIPT -e SCRIPT: --expression可以同时执行多个脚本 (把'AddressCommond' 称作脚本)
bbbb-admin@bbbb-admindeMac TEST % sed -i 's#2000#10#' sftp_login_18.5_22.command # 会报错
sed: 1: "sftp_login_18.5_22.command": unterminated substitute pattern
bbbb-admin@bbbb-admindeMac TEST % sed -i 's#2000#10#' test.txt # 会报错
sed: 1: "test.txt": undefined label 'est.txt'
bbbb-admin@bbbb-admindeMac TEST % sed -i '' 's#2000#10#' test.txt #正常执行
bbbb-admin@lbbbb-admindeMac TEST %