如何在linux中删除特定的“] [”
Posted
技术标签:
【中文标题】如何在linux中删除特定的“] [”【英文标题】:How to remove specific "][" in linux 【发布时间】:2020-10-28 13:25:36 【问题描述】:我有很多括号的文本文件,如下所示:
Name:[Sara,Jane,John]
FamilyName: [Alexandr,Walter,Waze]
Number: [21][44]
我只想删除 Number 中的 ][ 并使文件如下所示:
Name:[Sara,Jane,John]
FamilyName: [Alexandr,Walter,Waze]
Number: [2144]
下面的代码删除所有括号并且无法正常工作,我真的可以帮助我修改此代码吗?
find . -name "*.txt" |xargs sed -i.bak -e 's/[][]//g;' ''
最好的问候, 萨拉
【问题讨论】:
在这样的情况下,我们鼓励用户以代码的形式添加他们的努力,所以请在您的问题中添加相同的内容,然后让我们知道。 【参考方案1】:$ sed '/Number/ s/]\[//' ip.txt
Name:[Sara,Jane,John]
FamilyName: [Alexandr,Walter,Waze]
Number: [2144]
/Number/
匹配包含 Number
的行
对于这样的行,s/]\[//
将删除][
的第一次出现
[
需要转义以匹配它的字面意思
[][]
将匹配 ]
或 [
字符一次。使用g
标志将删除所有方括号。在此示例中,您不应使用字符类,因为您希望按特定顺序匹配 ]
和 [
。
再举一个例子,删除foo
,你需要使用s/foo//
而不是s/[foo]//
。
【讨论】:
【参考方案2】:您能否尝试以下操作,仅基于您显示的示例。
awk '/Number/gsub(/]\[/,"") 1' Input_file
解释: /Number/
正在当前行中寻找字符串 Number
,如果找到;然后使用gsub
将][
全局替换为NULL。 1
将打印当前行。
【讨论】:
以上是关于如何在linux中删除特定的“] [”的主要内容,如果未能解决你的问题,请参考以下文章