Bash脚本从.txt文件中删除特定行[重复]

Posted

技术标签:

【中文标题】Bash脚本从.txt文件中删除特定行[重复]【英文标题】:Bash-script delete a specific line from a .txt file [duplicate] 【发布时间】:2018-06-16 01:28:21 【问题描述】:

我想学习如何从 txt 文件中删除包含用户在变量中键入的单词的行 我试过 grep -v 但随后清除了文件的全部内容 帮助?!!!

【问题讨论】:

sed --in-place '/some string here/d' yourfile 如果字符串在变量中? 见:Difference between single and double quotes in bash 请注意sed 接受regular expressions,因此如果您执行类似sed "/./d" 之类的操作,它不会只删除带点的行,而是删除所有内容(因为. 代表“任何字符”在正则表达式中) 【参考方案1】:

这是一个如何存档的示例程序:

将此保存在example.sh

#!/bin/bash
word="$1" 
grep -F -v "$word"

将此保存在test.txt

Hello world
foo bar
baz bau

调用程序并在标准输入中输入 test.txt 文件:

chmod u+x example.sh  # Need to do this only once per script (*.sh file)
./example.sh Hello < test.txt

输出(“Hello world”行被删除):

foo bar
baz bau

【讨论】:

我能问你点别的吗? 如果它与这个答案无关,最好问一个新问题(如果那里还没有) 这和你所说的sed中的正则表达式有关 继续! (旁注:您也可以在评论中使用@mention 通知用户) 我想用英文字母替换莫尔斯电码,例如'. -' 和 'a' 如何用 sed @akraf 做到这一点

以上是关于Bash脚本从.txt文件中删除特定行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

通过 Bash 从文本文件中删除空行,包括空格字符 [重复]

在 Bash 中打印文件,跳过前 X 行 [重复]

使用bash shell脚本从文件中查找和提取特定字符串后的值?

删除 bash 脚本文件中除最后一次出现的重复变量

如何从bash中的多个文件名中删除公共前缀模式[重复]

从 Bash 脚本执行 GREP/CUT 命令时遇到问题