如何解决sed 命令不修改文件
我复制了 /etc/default/keybord
并制作了一个 keyboard2
文件。
当我得到文件时:
# KEYBOARD CONfigURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
然后我 sed s/fr/us/ keyboard2
并立即显示:
# KEYBOARD CONfigURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
但是当我再次cat keyboard2
时,我得到:
# KEYBOARD CONfigURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
使用 sudo 测试,测试放入 's/fr/us/'
我理解错了吗? sed 应该写入文件还是我需要管道并覆盖原始文件? 谢谢
版本:
sed (GNU sed) 4.7
Linux kali 5.9.0-kali5-amd64 #1 SMP Debian 5.9.15-1kali1 (2020-12-18) x86_64 GNU/Linux in Oracle Virtual Box
解决方法
你是对的,你理解错了。 sed 确实不应该覆盖输入文件,因此,正如您猜测的那样,您必须将输出重定向(管道)到不同的文件,例如:
sed 's/fr/us/' /etc/default/keyboard > keyboard2
然后将 keyboard2
移至 /etc/default/keyboard
(不要忘记制作原始文件的备份副本,以防万一)。
@sebbit 写的应该可以工作,但是 sed
可以选择直接写入更改文件。
只需添加 -i
标志,这将更改您从
读取的文件
像这样:
sed -i s/fr/us/ keyboard2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。