根据具有分隔符的.txt文件中的用户输入删除行:

Ken*_*Ken 0 shell sed

我有一个代码,我想删除.txt文件中基于用户输入的行.

例如

item.txt包含

sword and shield:10:20:30
cloak and dagger:1:2:3
sock and shoes4:5:
very awesome things7:8:9
Run Code Online (Sandbox Code Playgroud)

用户想要根据他输入的"非常棒的东西"删除整行,无论大小写如何匹配

read choice1
sed -e $choice1/d item.txt
Run Code Online (Sandbox Code Playgroud)

SMA*_*SMA 5

将grep与-i(忽略大小写)和-v(检索除pattern之外的所有内容)选项一起使用,如下所示:

grep -iv "Very Awesome ThiNGS" item.txt ##use "$choice1" instead of "Very Awesome ThiNGS"
Output:
sword and shield:10:20:30
cloak and dagger:1:2:3
sock and shoes4:5:
Run Code Online (Sandbox Code Playgroud)

如果您需要sed解决方案,您可以执行以下操作:

sed -i.bak "/$choice/Id" test.txt
Run Code Online (Sandbox Code Playgroud)

-i - inplace在文件中删除并在进行更改之前创建.bak.
我最后 - 忽略这个案子.
d在最后 - 删除该行.