2016-06-01 11 views
0

私が見つけ、私が見つけるいくつかの単語を交換したいが、私は固定文字列ではないそれを交換したいのですが、変数1とのn番目の出現。数文字列

iが入力を持っているファイルは、いくつかのテーブルクエリを作成しています

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

私は前に各を追加する必要があり、このような合成文字列CREATE:

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から最後までFOOのみ任意の行に一度表示される場合は、このawkスクリプトを使用することができなステートメント


+0

私の質問を編集するためのInianいただきありがとうございます:) – Hammond95

+1

これは、もともとのすべてのまともな答えだった既存の3つの答えを(意味、頼まれたものとは非常に異なる問題です元の質問)はもはや意味をなさないでしょう。おそらく新しい質問だったはずです。 – dannysauer

+0

ええ、私はそれについて申し訳ありません:/ – Hammond95

答えて

1

をCREATE:awkを使用して

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

あなたはGSUBを使用している理由はそれだけで行ごとに一度表示された場合は... – 123

1

は私のためにトリックをしました。

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

ロジックは、ここ$0が見つかったパターンの各インスタンスであるパターンFOOが検索されると(1によって行わ)印刷されるファイル全体から、我々は(countを発見パターンと一致していますPerlの

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

を使用

$ cat file 
FOO 
..... 
.... 
... 
FOO 
.... 
..... 
...... 
FOO 
.... 
FOO 
FOO 
..... 

$ awk '/FOO/ { $0=$0 "" ++count }1' file 
FOO1 
..... 
.... 
... 
FOO2 
.... 
..... 
...... 
FOO3 
.... 
FOO4 
FOO5 
..... 
+0

それは$ = 0 $ 0何を意味するのでしょうか? – Hammond95

+0

@MartinMcFlyDeLuca:解釈は++ count'パターンのランニングカウンタを追加($ '0'である 'FOO')が見つかりましたパターンについて、基本的になる「」 '$ = 0 $ 0となります。 – Inian

+0

どこに置きたい文字列を入れなければならないのですか? ** awk "/ FOO/$ NEWSTRING {$ 0 = $ 0" "++ count} 1" ** – Hammond95

2

がfに動作します、そのカウンタが付加されています)または1行に複数のFOOがあります。

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

=>

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

OPのように0ではなく1つのカウントを開始するには、 '$&。++ $ x'のようにpreincrementに切り替えます。また、 'g'を削除すると、行の最初のインスタンスだけがこの作業を行い、それが望ましい場合は、この作業が行われることを説明する価値があります。 – dannysauer

+0

@dannysauer 1行に1つのインスタンスしかなければ、gを削除してもOPは指定されていないか、または1行に1回目の出現を変更したいだけであることを暗示します。いずれにしても、OPは質問を完全に変更したので、これ以上の回答はおそらく有効ではないでしょう。 – 123

+0

'/ g'ノートの主なポイントは、解決策を探してこの答えを見つける他の人たち(これは元の質問に対する良い答えでした)を助けることでした。しかし、あなたが言ったように、この質問は完全に変わったので、これはおそらく誰も助けないでしょう。 :/ – dannysauer

関連する問題