行の先頭に数字を追加

行の先頭に数字を追加

たとえば、「E」が見つかるたびに変更される値に基づいてファイルに増分値を追加したいとします。 (これは任意の値に置き換えることができます。)私が試したいくつかのオンライン調査では:

awk '/E/{sub("E", "E"++v)}1' output.txt > output2.txt

ただし、これは「E」自体の後に増分値のみを追加します。いいえ、これは学校の課題ではありません。このデータは、次にその値がIDフィールドであるMySQLテーブルに収集されます。このファイル(非常に大きなバージョン)は、単語復号化アプリケーション用にMySQLテーブルに収集されます。

サンプルファイル:output.txt

aaa
aba
acaE
baa
bab
badE
caa
cab
cdeE
ddd

サンプルファイル:希望

1aaa
1aba
1acaE
2baa
2bab
2badE
3caa
3cab
3cdeE
4ddd

答え1

次のようにできます。

awk '{print i $0}; /E$/{i++}' i=1 file

デフォルトでは設定されていi=1ないため、初期値に設定します。その後、その行が一致していることを確認して増やします。{print i $0}i$0Ei

αѓsнιιが提案した非常に類似した代替案は次のとおりです。

awk '{print i+1 $0}; /E$/{i++}' file 

最初に設定する必要がないように合計1します。ii=1

関連情報