很宅的男 发表于 2017-09-12 14:16

请教一个字符串替换的问题

大家好,请教大家一个问题,我现在有一个文本,格式如下:
   text=“”
   text=“”
   text=“”
   ...
   我有另外一个文本,我现在想把另外一个文本的数值填到上面的“”中,我自己想了个办法就是用两个数组,然后逐个赋值这样,不过一直通不过,请教各位有没有什么好方法呢?多谢各位啦!

104359176 发表于 2017-09-12 20:17

把你的代码放上来,最起码也要把文本内容放上来,才能知道怎么帮你。

很宅的男 发表于 2017-09-14 11:18

本帖最后由 很宅的男 于 2017-09-14 11:20 编辑

回复 2# 104359176

   其实文本就是我给的那个样子,文本里面每行都是这样的,只是我需要把另一个数组里面的元素从前到后填到这个文本每行的text里面去。   比如数组里面是(1,2,3),那完成后文本就变成了:
      text="1"
      text="2"
      text="3"
      ....

jason680 发表于 2017-09-14 13:52

回复 3# 很宅的男

1. input file/data
2. procedure
3. output file/data

don't forget the example

很宅的男 发表于 2017-09-14 13:55

回复 4# jason680

您好,整个文本和程序比较大,这个是其中的一个问题,全放上来不太方便,其实就算看了文本程序,跟我描述的也是一样的

jason680 发表于 2017-09-14 13:58

回复 5# 很宅的男

an example or up to you

很宅的男 发表于 2017-09-14 14:03

回复 6# jason680

您好,其实就是我的文本里面有一堆如下格式的内容:      text=""
   text=""
   text=""
   ...
   一行一个这样子
   然后我需要将一个数组比如@arr=(1,2,3)的值按顺序填入到“”里面,最后文本就变成了:
   text="1"
   text="2"
   text="3"
   ...
   我这是一个比较复杂的任务中遇到的一个问题,我自己在这一块的处理方法是匹配到每个“”,然后保存到一个新的数组比如@tmp中,然后遍历数组,让@tmp的值等于@arr,但是一直有问题,所以想请教下您这个有什么比较好的方法吗?

jason680 发表于 2017-09-14 14:09

回复 7# 很宅的男

$ cat FILE
text=""
text=""
text=""

$ perl -pe '
BEGIN{
@arr=(1,2,3)
}
{
if(m/""/){
    $new=shift @arr;
    s/""/"$new"/}
}' FILE
text="1"
text="2"
text="3"

很宅的男 发表于 2017-09-14 14:16

回复 8# jason680

哇,太好了!多谢您提供的方法,我用shift解决了问题,看来还有好多东西要学习,真的非常感谢您

很宅的男 发表于 2017-09-14 21:10

回复 8# jason680

您好,再请教你一个问题,shift一次只能从头部取出一个元素,如果一次取两个应该怎么弄呢?
页: [1]
查看完整版本: 请教一个字符串替换的问题