Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 替换文件中的文本并为新字符串添加编号_Perl_Sed_Awk - Fatal编程技术网

Perl 替换文件中的文本并为新字符串添加编号

Perl 替换文件中的文本并为新字符串添加编号,perl,sed,awk,Perl,Sed,Awk,我希望替换文件中出现的每一个字符串,但替换方式是对新文本进行编号。例如: 发件人: 致: 如何在命令行中执行此操作?使用awk的单向操作: perl -lape '@F[0,1] = ($F[1], "baz". ++$i); $_= "@F"' file $ awk '{gsub(/foo bar/,"bar baz"++i)}1' file bar baz1 a bar baz2 b bar baz3 c 带awk的单向开关: $ awk '{gsub(/foo bar/,"bar ba

我希望替换文件中出现的每一个字符串,但替换方式是对新文本进行编号。例如:

发件人:

致:


如何在命令行中执行此操作?

使用awk的单向操作:

perl -lape '@F[0,1] = ($F[1], "baz". ++$i); $_= "@F"' file
$ awk '{gsub(/foo bar/,"bar baz"++i)}1' file
bar baz1 a
bar baz2 b
bar baz3 c

带awk的单向开关:

$ awk '{gsub(/foo bar/,"bar baz"++i)}1' file
bar baz1 a
bar baz2 b
bar baz3 c
使用shell

#! /usr/bin/bash

i=0
while read a b c
do
  ((i++))
  echo "bar baz$i $c"
done < file
#/usr/bin/bash
i=0
读一本b c
做
((i++)
echo“bar baz$i$c”
完成<文件
使用shell

#! /usr/bin/bash

i=0
while read a b c
do
  ((i++))
  echo "bar baz$i $c"
done < file
#/usr/bin/bash
i=0
读一本b c
做
((i++)
echo“bar baz$i$c”
完成<文件

+1。如果愿意,您可以使用NR而不是++i。@EdMorton没有足够的信息,假设出现不一定每行出现一次。sub()就足够了。@BMW参考我之前的注释。+1。如果愿意,您可以使用NR而不是++i。@EdMorton的信息不够,假设出现不一定每行出现一次。sub()就足够了。@BMW请参阅我之前的评论。