sed-替换并使用多行模式

sed-替换并使用多行模式

我有一个包含多行的 CSV 文件。我想多次复制相同的数据,并且每次用不同文件中的另一个字符替换特定字符。

例子:

下面是两个文件,一个 csv 和一个 ref 文件(包含 A 到 Z)字符。我想复制 csv 内容 26 次(A 到 Z)并且每次替换变量VAR与 A、B、C、...Z。

猫 csv_file

some text with VAR,data 2,data 3,data 4,some text and VAR
,,,data 4,some text
,,,data 4,some text

猫参考

A
B
C
...so on upto 
Z

结果:

some text with A,data 2,data 3,data 4,some text and A
,,,data 4,some text
,,,data 4,some text
some text with B,data 2,data 3,data 4,some text and B
,,,data 4,some text
,,,data 4,some text
..
... so on

我正在做的是

DATA="some text with & following text,data 2,data 3,data4,some text and_&\n,,,data4,some text\n,,,data 4,some text"

sed -e "s/^.*$/$DATA/g" ref

除了使用文件名而不是变量(DATA)之外,还有其他方法可以实现相同的结果吗?

答案1

每次用 {A..Z} 替换 VAR 时使用以下命令

它工作正常

for i in `cat /var/tmp/ref`; do  sed "s/VAR/$i/g" csv_file ;done

样本输出

some text with A,data 2,data 3,data 4,some text and A
,,,data 4,some text
,,,data 4,some text
some text with B,data 2,data 3,data 4,some text and B
,,,data 4,some text
,,,data 4,some text

相关内容