我不知道这是否可能,但是你能动态地改变查找/替换吗?
基本上我有这样的东西

<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/

10-15 13:14