我在sed
这里查看了其他页面,但在正则表达式搜索部分中找不到-i
与变量一起使用的页面。我正在尝试删除文件中请求的行myresolv.conf
并获取其行号。我班上有 5 个人都被卡住了 :( 任何帮助都很棒
line=$(grep -n "$3" ./myresolv.conf | cut -d: -f1)
sed -i "$line" ./myresolv.conf
我想,你的意思是remove line
当你说cut out line
.
尝试使用grep
with-v
选项。我相信你不需要sed
这里。
grep -v "$3" ./myresolv.conf
或者,如果您想删除文件本身中的行
sed -i.bak "/$3/d" ./myresolv.conf
在覆盖更改之前使用-i
with.bak
创建备份文件非常有用。
您似乎想从文件中删除特定行。您希望在line
变量中获得一个行号(但请注意 - 如果您有多个匹配的行,您将获得一个数字列表,这将导致您的其余过程爆炸)。您遇到的问题是您输入的命令sed
只是行号 - 您没有指定sed
与该行号有关的任何内容。所以,也许你想要这个:
sed -i "${line}d" file.txt
如果我误解了您的问题,并且您不想删除该行,而只是打印它,然后将其替换d
为p
...