我正在尝试根据该值向文件添加一个递增值,例如它在发现“E”时随时更改(可以用任何值替换)从我尝试过的一些在线研究中:
awk '/E/{sub("E", "E"++v)}1' output.txt > output2.txt
Run Code Online (Sandbox Code Playgroud)
但这只会在“E”本身之后增加一个增量值。不,这不是学校作业,这些数据接下来将被摄取到 MySQL 表中,该表的值为 ID 字段。注意:“E”将始终出现在数据集的末尾。这个文件(一个非常大的版本)将被摄取到 MySQL 表中,用于单词 unscrambler 应用程序。
示例文件:output.txt
aaa
aba
acaE
baa
bab
badE
caa
cab
cdeE
ddd
Run Code Online (Sandbox Code Playgroud)
示例文件:需要
awk '/E/{sub("E", "E"++v)}1' output.txt > output2.txt
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
awk '{print i $0}; /E$/{i++}' i=1 file
Run Code Online (Sandbox Code Playgroud)
我们设置i=1为初始值,因为默认情况下它是未设置的。{print i $0}印刷品i和整行$0。然后,只需检查该行是否匹配E并i在这种情况下递增。
??s??? 提出的一个非常相似的替代方案 是
awk '{print i+1 $0}; /E$/{i++}' file
Run Code Online (Sandbox Code Playgroud)
总结1到i,这样我们就不必初始设置i=1。