![sed를 사용하여 문자열을 카테고리로 바꾸는 방법은 무엇입니까?](https://linux55.com/image/114667/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
몇 가지 범주와 해당 값이 있습니다.
Category: Value:
1*4 15.934934
1*5*3 19.281281
1*8*10*2 78.20912
카테고리를 카테고리를 나타내는 숫자로 바꾸고 싶습니다.
예를 들어:
1*4에 두 개의 숫자가 있으면 2로 대체됩니다.
1*5*3은 3자리 숫자이므로 3자리로 바꾸세요.
1*8*10*2는 4자리 숫자이므로 4로 바꿉니다.
수백 개의 파일에 대해 이 프로세스를 수행해야 하므로 프로세스를 자동화하는 것이 매우 중요합니다!
답변1
~처럼스틸 드라이버의 생각, 하지만 별을 세는 중:
awk '{ $1 = 1 + gsub(/\*/, "", $1); print; }' < input > output
예제 입력에서 실행하면 다음이 생성됩니다.
2 15.934934
3 19.281281
4 78.20912
답변2
sed
숫자에 대한 개념이 없기 때문에 이 작업을 수행하는 것은 약간 힘듭니다.
sed -E 's/^[0-9]+\*/1*/; s/^1\*[0-9]+/2/; s/^2\*[0-9]+/3/; s/^3\*[0-9]+/4/;' input