删除文本文件中出现的字符串

问题描述 投票:0回答:3

如何从文本文件(命令行)中删除特定字符串,例如

hello
goodbye
goodbye
hello
hello
hello
goodbye

在这种情况下,我想删除所有出现的“再见”

Linux 或 Windows,(只要 Linux 命令在 GNU 中可用)

linux windows text command-line
3个回答
49
投票
sed -i -e 's/goodbye//g' filename

要删除多个单词:

sed -i -e 's/\(goodbye\|hello\|test\|download\)//g' filename

1
投票

如果您正在通过 Vi 模式查找 Linux 文件。请找到以下对我有帮助的解决方案

:g/goodbye/d - 这将删除所有再见

:%g!/goodbye/d - 这将删除除 goodbye 之外的所有内容

即使您使用的是 Windows 计算机,您也可以下载并配置 Ubuntu shell 并使用上述命令


0
投票

对我来说最好的解决方案,无需使用

sed
,在使用更复杂的字符串(如pathscommands)时需要转义字符。

#!/bin/bash

REPLACE_LINE() {
    file_content=$(<$1)
    file_content=${file_content//$2/$3}
    echo "$file_content" > $1
}

file=./your_file.txt
line="cd /path/to/some/folder && do --some=stuff &"

# Remove
REPLACE_LINE "$file" "$line"

# Replace
REPLACE_LINE "$file" "$line" "your_new_command_here"
© www.soinside.com 2019 - 2024. All rights reserved.