Bash-script delete a specific line from a .txt file
我想学习如何从txt文件中删除包含用户在变量中键入的单词的行
我试过grep -v然后清除文件的全部内容
救命?!!!
-
sed --in-place '/some string here/d' yourfile
-
如果字符串是变量?
-
请参阅:bash中单引号和双引号之间的区别
-
好的,谢谢你!
-
请注意,sed接受正则表达式,因此如果您执行类似sed"/./d"之类的操作,则不会仅删除带点的行,而是删除所有内容(因为.代表正则表达式中的"任何字符")
这是一个如何存档的示例程序:
将其保存在example.sh中:
1 2 3
| #!/bin/bash
word="$1"
grep -F -v"$word" |
将其保存在test.txt中:
1 2 3
| Hello world
foo bar
baz bau |
调用程序并将其与标准输入上的文件test.txt一起提供:
1 2
| chmod u+x example.sh # Need to do this only once per script (*.sh file)
./example.sh Hello < test.txt |
输出("Hello world"行被删除):
-
我可以问你别的什么吗?
-
如果它与这个答案无关,那么最好问一个新问题(如果那里还没有)
-
它与你所说的关于sed中的正则表达式有关
-
前进! (旁注:您也可以使用@mention在评论中通知用户)
-
我想用英文字母替换摩尔斯电码,例如'。 - '与'a'如何用sed @akraf做到这一点
-
如果你想逐字地使用正则表达式特殊字符(例如搜索一个点而不是"任何字符"),你会加一个反斜杠(这称为"转义")。所以要用sed替换.-你要做sed 's/\.-/a/g'( g表示"多次替换不仅一次","s / X / Y /"表示"用Y替换X"。)您需要转义以下字符:.*^$[]如果使用"POSIX扩展正则表达式""(检查man sed,你可以启用那些)你必须另外逃脱+?{}()
-
unix.stackexchange.com/questions/273318/…