繁体   English   中英

如何删除 linux 中的特定“][”

[英]How to remove specific “][” in linux

我有很多括号的文本文件,如下所示:

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;' '{}'

最好的问候,萨拉

$ sed '/Number/ s/]\[//' ip.txt 
Name:[Sara,Jane,John]
FamilyName: [Alexandr,Walter,Waze]
Number: [2144]
  • /Number/匹配包含Number的行
    • 对于这样的行, s/]\[//将删除第一次出现的][
    • [需要转义以匹配它

[][]将匹配][字符一次。 然后使用g标志将删除所有方括号。 在此示例中,您不应使用字符 class,因为您希望以特定顺序匹配][

再举一个例子,要删除foo ,您需要使用s/foo//而不是s/[foo]//

您能否仅根据您显示的示例尝试以下操作。

awk '/Number/{gsub(/]\[/,"")} 1' Input_file

解释: /Number/正在寻找当前行中的字符串Number ,如果找到; 然后使用gsub][全局替换为 NULL。 1将打印当前行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM