在unix中使用sed替换单词的多次出现
发布时间:2020-12-16 01:49:29 所属栏目:安全 来源:网络整理
导读:我在unix中要求用空格替换单词的出现. 我的文件看起来像下面.我需要更换| NA |有空间 文件格式 1234|NA|NA|abcd|xyz2345|NA|NA|NA|lmn456|NA|abcd|xya|ggh 预期产出 1234| | |abcd|xyz2345| | | |lmn456| |abcd|xya|ggh 我使用以下命令,但它只替换第一次出现
我在unix中要求用空格替换单词的出现.
我的文件看起来像下面.我需要更换| NA |有空间 文件格式 1234|NA|NA|abcd|xyz 2345|NA|NA|NA|lmn 456|NA|abcd|xya|ggh 预期产出 1234| | |abcd|xyz 2345| | | |lmn 456| |abcd|xya|ggh 我使用以下命令,但它只替换第一次出现 sed 's/|NA|| |/g' 解决方法
虽然g修饰符确实可以进行“全局”替换,但替换必须是非重叠的.当需要重叠替换时,必须循环:
$sed ':a; s/|NA|/| |/g; ta' file.txt 1234| | |abcd|xyz 2345| | | |lmn 456| |abcd|xya|ggh 以上是在GNU sed上测试的.对于BSD(OSX)sed(帽子提示:Jonathan Leffler),标签a必须仅出现在命令字符串的末尾: sed -e ':a' -e ' s/|NA|/| |/g; ta' file.txt 这个怎么运作 >:a创建标签a.> s / | NA | / | | / g执行您想要的替换,但仅用于| NA |的非重叠实例.> ta告诉sed跳转到标签a,如果前面的替换命令导致对该行的任何更改.以这种方式,替换命令被重复多次,以替换每次出现的| NA |. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |