gpt4 book ai didi

file - 如何在Unix中从文件中查找和删除行?

转载 作者:行者123 更新时间:2023-12-05 01:11:38 25 4
gpt4 key购买 nike

我有一个文件(例如:test.txt),这个文件包含一些行,例如一行是:abcd=11
但它可以是例如:abcd=12
数字不同但 abcd= 在所有情况下都是相同的,所以有人可以给我命令来查找此行并将其删除吗?

我尝试过:sed -e \"/$abcd=/d\" /test.txt >/test.txt 但它从我的文件中删除了所有行,我也尝试过:sed -e \"/$abcd=/d\" /test.txt >/testNew.txt 但它不会从 test.txt 中删除行,它只创建新文件 (testNew.txt) 并在此文件中删除我的行.但这不是我想要的。

最佳答案

根据您在文本中的描述,这里是您的 sed 脚本的清理版本,应该可以正常工作。

假设一个 linux GNU sed

sed -i '/abcd=/d' /test.txt 

如果您使用的是 OS-X,那么您需要
sed -i "" '/abcd=/d' /test.txt 

如果这些不起作用,那么使用带有条件 mv 的老式 sed 来管理您的 tmpfiles。
sed '/abcd=/d' /test.txt > test.txt.$$ && /bin/mv test.txt.$$ test.txt

笔记:

不确定为什么要执行 \"/$abcd=/d\" ,除非您使用此代码执行的操作比您指示的多(例如使用 " ),否则您不需要转义 eval 字符。只需将其写为 "/$abcd=/d"

通常你不需要'-e'

如果你真的想使用 '$abcd,那么你需要给它一个值 AND 因为你正在匹配字符串 'abcd=',那么你可以这样做
 abcd='abcd='
sed -i "/${abcd}/d" /test.txt

我希望这有帮助。

关于file - 如何在Unix中从文件中查找和删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9829360/

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