Linux命令删除这个

Linux命令删除这个

我想删除我的文本文件中的这种模式[-.(D_)-]。我用 sed 和 awk 做了,但没有结果。

基本上我想删除文本文件中这些字符之间的[-所有内容。-]

答案1

使用 sed:

sed 's/\[-.*-]//g'

例子:

~ echo 'foo[-.(D_)-]bar' | sed 's/\[-.*-]//g'
foobar

如果不转义[,[-.*-]将被视为括号表达式的开头(包含字符列表或范围,在本例中为列表-, ., *)。

答案2

如果您提供一些示例数据和输出,那就更好了。

输入.txt:

test1[-.(D_)-]test2

如果您想删除[-& -],请尝试以下操作:

sed -i "/\(.*\)[-.*-]\(.*\)/\1 \2/" Input.txt

如果你想保留[-& ,试试这个-]

sed -i "/\(.*\)[-.*-]\(.*\)/\1[--]\2/" Input.txt

输出:

test1[--]test2

-i > 就地编辑文件而不是打印到标准输出。 (去掉这个选项先检查这是否是你想要的输出)

相关内容