【发布时间】:2019-02-13 17:07:52
【问题描述】:
我想使用 sed 在文件的最后添加一行文本。在这种情况下,我正在使用 OS X,我想在 /etc/sudoers 文件中添加一行。我希望我的字符串成为文件中单独一行的最后一个字符串。有什么想法吗?
例子:
text
text
text
<my string>
谢谢。
【问题讨论】:
我想使用 sed 在文件的最后添加一行文本。在这种情况下,我正在使用 OS X,我想在 /etc/sudoers 文件中添加一行。我希望我的字符串成为文件中单独一行的最后一个字符串。有什么想法吗?
例子:
text
text
text
<my string>
谢谢。
【问题讨论】:
如果您可以在不使用 sed 的情况下执行此操作,那么执行 echo <line> >> /etc/sudoers 将很容易(但请注意您的线路有效!)。
如果你想用 sed 来做,你可以用 sed -i -e '$a<line>' /etc/sudoers 转到最后一行,然后附加你的文本。
【讨论】:
sudo。
/etc/sudoers文件默认是只读的,所以需要先使用chmod使其可写。
sed,不像 GNU sed 需要 -i 选项的参数。可以是扩展名或'',例如sed -i .bak ... 或 sed -i '' ...。后者做到了。
echo "line to add" | sudo tee -a /etc/sudoers
考虑使用echo 和输出重定向:
sudo sh -c "echo 'my string' >> /etc/sudoers"
.
【讨论】:
sudo 命令以管理员身份运行它。为了让重定向通过sudo 起作用,我们需要运行一个shell 并通过-c 选项为其提供一个迷你shell 脚本。
您可以使用awk
awk '1; END {print "text to add"}' file > tmp && mv tmp file
这将在文件file 末尾添加text to add 作为新行
【讨论】:
我也尝试过使用 sed 来实现这一点,但不幸的是,还没有找到任何解决方案。但我找到了一种使用 echo 实现此目的的解决方法:
$ echo "你要添加的行" >> yourTextFile.txt
【讨论】: