我不知道这是否可能,但是你能动态地改变查找/替换吗?
基本上我有这样的东西
<3 digit number> <data>
我想做的是如果数据与模式匹配
<word>:<4 digit number>
将
<word>:
的所有实例(在整个文件中)替换为该行的3位数字,即:020 Word
021 Word:0001
Replace with
020 021
021 0210001
用AWK还是Sed都可以?
如果不是,在C语言中是否可行?
最佳答案
我知道这不是您所要求的,但我认为解决这个问题的最好方法是使用一个简单的Perl脚本。
#!/usr/bin/perl
$in= "input.txt";
$out= "output.txt";
# Buffer the whole file for replacing:
open(INFILE, $in);
@lines = <INFILE>;
open(INFILE, $in);
# Iterate through each line:
while(<INFILE>) {
# If the line matches "word:number", replace all instances in the file
if (/^(\d{3}) (\w+:)\d{4}$/) {
$num = $1; word = $2;
s/$word/$num/ foreach @lines;
}
}
open(OUTFILE, $out);
print OUTFILE foreach @lines;
它看起来比实际需要的时间要长得多,因为我为你做了一个又好又容易阅读的网站。
关于bash - Bash正则表达式查找和替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7602885/