0

我在sed这里查看了其他页面,但在正则表达式搜索部分中找不到-i与变量一起使用的页面。我正在尝试删除文件中请求的行myresolv.conf并获取其行号。我班上有 5 个人都被卡住了 :( 任何帮助都很棒

line=$(grep -n "$3" ./myresolv.conf | cut -d: -f1)

sed -i "$line"  ./myresolv.conf
4

2 回答 2

1

我想,你的意思是remove line当你说cut out line.

尝试使用grepwith-v选项。我相信你不需要sed这里。

grep -v "$3" ./myresolv.conf

或者,如果您想删除文件本身中的行

sed -i.bak "/$3/d" ./myresolv.conf

在覆盖更改之前使用-iwith.bak创建备份文件非常有用。

于 2013-10-08T16:16:50.000 回答
1

您似乎想从文件中删除特定行。您希望在line变量中获得一个行号(但请注意 - 如果您有多个匹配的行,您将获得一个数字列表,这将导致您的其余过程爆炸)。您遇到的问题是您输入的命令sed只是行号 - 您没有指定sed与该行号有关的任何内容。所以,也许你想要这个:

sed -i "${line}d" file.txt

如果我误解了您的问题,并且您不想删除该行,而只是打印它,然后将其替换dp...

于 2013-10-08T16:32:36.600 回答