将第n个字符串

时间:2016-06-01 13:26:06

标签: string shell replace

我想找到并替换我找到的一些单词,但我想用固定字符串替换它,而不是用变量字符串替换它。

我输入的文件有一些创建表查询:

CREATE MULTISET TABLE DBNAME.TABLENAME
( .... ecc
)

我必须在每个之前添加一个像这样的组合字符串:

SELECT 1 FROM DBC.TABLESV WHERE DATABASENAME = '<DB_NAME>' AND TABLENAME = '<TABLE_NAME>' AND TABLEKIND='T';
.IF ACTIVITYCOUNT = 0 THEN .GOTO LABEL1 
DROP TABLE <DB_NAME>.<TABLE_NAME>;
.LABEL LABEL1

每个LABEL 必须编号为出现次数。

所以从1到最后一个CREATE语句

3 个答案:

答案 0 :(得分:2)

使用perl

perl -pe 's/FOO/$&.$x++/ge' file

每行可以使用多个FOO。

FOO FOO FOO
.....
....
...
FOO yadda FOO
....
.....
......
FOO sf
.... sdfsdf
FOO dsf dfsfs
s dfsdf FOO s fds d FOO
.....

=&GT;

FOO0 FOO1 FOO2
.....
....
...
FOO3 yadda FOO4
....
.....
......
FOO5 sf
.... sdfsdf
FOO6 dsf dfsfs
s dfsdf FOO7 s fds d FOO8
.....

答案 1 :(得分:1)

如果FOO只在任何一行显示一次,您可以使用此awk脚本:

awk 'BEGIN { i=1; } { gsub(/FOO/, "FOO" i) && ++i; print }'

答案 2 :(得分:1)

使用awk为我做了诀窍。

awk '/FOO/ { $0=$0 "" ++count }1' file

逻辑是搜索模式FOO,并从打印的整个文件(由1完成)中搜索,我们将找到的模式与count匹配(此处{ {1}}是找到的模式的每个实例,附加了计数器)

$0