如何从文本文件(命令行)中删除特定字符串,例如
hello
goodbye
goodbye
hello
hello
hello
goodbye
在这种情况下,我想删除所有出现的“再见”
Linux 或 Windows,(只要 Linux 命令在 GNU 中可用)
sed -i -e 's/goodbye//g' filename
要删除多个单词:
sed -i -e 's/\(goodbye\|hello\|test\|download\)//g' filename
如果您正在通过 Vi 模式查找 Linux 文件。请找到以下对我有帮助的解决方案
:g/goodbye/d - 这将删除所有再见
:%g!/goodbye/d - 这将删除除 goodbye 之外的所有内容
即使您使用的是 Windows 计算机,您也可以下载并配置 Ubuntu shell 并使用上述命令。
对我来说最好的解决方案,无需使用
sed
,在使用更复杂的字符串(如paths和commands)时需要转义字符。
#!/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"