Bash 正则表达式查找和替换
我不知道这是否可行,但是您可以动态更改查找/替换吗? 基本上我有这样的东西
<3 digit number> <data>
,我想做的是,如果数据与模式匹配,
<word>:<4 digit number>
则将
的所有实例(在整个文件中)替换为该行的 3 位数字 IE:
020 Word
021 Word:0001
Replace with
020 021
021 0210001
Is this可以使用 AWK 或 Sed 吗? 如果不行,用C语言可以吗?
I don't know if this is possible, but can you dynamically alter a find/replace?
Basically I have something like this
<3 digit number> <data>
and what I want to do is if data matches the pattern
<word>:<4 digit number>
replace all instances (in the entire file) of <word>:
with the line's 3 digit number I.E:
020 Word
021 Word:0001
Replace with
020 021
021 0210001
Is this doable with AWK or Sed?
If not, is it doable in C?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我知道这不是您所要求的,但我认为解决此问题的最佳方法是使用简单的 Perl 脚本。
它看起来比实际需要的要长得多,因为我把它写得很好并且易于您阅读。
I know this isn't what you asked, but I think the best way to solve this is with a simple Perl script.
It looks a lot longer than it really needs to be, because I made it nice and easy-to-read for you.
我希望这次我答对了。
尝试以下内容:
I hope this time I got you right.
try the stuff below:
此 awk 解决方案需要两次遍历您的文件:一次查找所有需要替换的
Word
,一次实际执行替换:需要
gawk
来捕获括号。This awk solution takes 2 passes through your file: once to find all the
Word
s needing replacement, and once to actually do the replacing:Requires
gawk
for capturing parentheses.这是另一个 sed 解决方案:
Here's another sed solution: