gpt4 book ai didi

linux - 删除文件中包含 "sed"的文本无法按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:53 25 4
gpt4 key购买 nike

我目前正在为“nslookup”命令编写一个小脚本,在测试中我遇到了一个我不明白的问题。在我的脚本中,会自动创建一个 .txt 文件,如果用户愿意,可以向其中输入一些文本。他还可以删除文档中的特定行。我尝试用“sed”编写它,但它似乎无法正常工作。

这里是终端输出的菜单:

Domains:
1) new_domain
2) domain
3) Create new Domain
4) Delete a Domain
5) Quit
Input>

前两个数字也代表每个文本的行。删除域的代码如下:

filename=domains.txt
old_filename=domains_backup.txt
read -p "Which domain-number shall be deleted?: " num_input
mv $filename $old_filename
sed "/$num_input/d" < $old_filename > $filename
rm $old_filename

但是,当执行该脚本并且用户想要删除第 2 行(域)时,文本文件保持不变并且不会更新。当我仅使用终端尝试相同的操作时,一切正常。我有什么遗漏的吗?

最佳答案

要按行号删除一行,您需要使用 $num_input d 而不是 /$num_input/d :第二个匹配包含 $num_input 的行。

顺便说一句,如果您使用 GNU sed,您可以让它处理备份:

sed -i.backup "$num_input d" domains.txt

这将创建未受影响的 domains.txt 的副本作为 domains.txt.backup(或您在 -i 之后指定的任何后缀)并更新 domains.txt 文件。

关于linux - 删除文件中包含 "sed"的文本无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55949207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com