我有一个文本文件,并且想将一个计数器附加到多个感兴趣的不同字符串中。一个例子infile
:
string_of_interest
abcd
efgh
another_string_of_interest
ijkl
abcd
another_string_of_interest
mnop
wxyz
string_of_interest
ijkl
wxyz
another_good_string
abcd
efgh
another_string_of_interest
正如您所看到的,有多个字符串需要忽略,其中一些可能会重复,但我只想计算字符串子集的重复次数以生成如下outfile
所示的结果:
string_of_interest_1
abcd
efgh
another_string_of_interest_1
ijkl
abcd
another_string_of_interest_2
mnop
wxyz
string_of_interest_2
ijkl
wxyz
another_good_string_1
abcd
efgh
another_string_of_interest_3
请注意,计数器使用蛇形命名法作为每个字符串的一部分附加。
我已经摸索sed
并awk
尝试过,但我太新手了,还远远没有接近。有什么建议吗?
答案1
如果您感兴趣的字符串的所有行都包含一个关键字符串,例如"string"
,你可以这样做:
awk '/string/{ $0=$0 "_" ++seen[$0] }1' infile
否则使用下面的代码,即为与相应感兴趣的字符串匹配的每一行为其附加一个递增计数器。
awk '
$0 == "string_of_interest" ||
$0 == "another_string_of_interest" ||
$0 == "another_good_string" { $0=$0 "_" ++seen[$0] } 1
' infile