텍스트 파일이 있고 관심 있는 여러 다른 문자열에 카운터를 추가하고 싶습니다. 한 가지 예 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