微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sed 命令不修改文件

如何解决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 举报,一经查实,本站将立刻删除。