![awk를 사용하여 특정 문자를 가져온 후 열의 모든 항목을 어떻게 삭제/교체할 수 있나요?](https://linux55.com/image/97211/awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8A%B9%EC%A0%95%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EA%B0%80%EC%A0%B8%EC%98%A8%20%ED%9B%84%20%EC%97%B4%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%ED%95%AD%EB%AA%A9%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%82%AD%EC%A0%9C%2F%EA%B5%90%EC%B2%B4%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
파일 .txt 예:
/map/1.0.0/cd/base/4/23/82.png 200
/map/1.0.0/cd/base/2/48/154.png?fefsfes 200
/map/1.0.0/cd/base/3/45/433.png?gtdrdrg 200
이것을 제거해야 합니다:
.png
.png?fefsfes
.png?gtdrdrg
나는 이것을 사용한다
$ cat file.txt | awk '{ print $1","$2}'
답변을 얻었습니다 :
/map/1.0.0/cd/base/4/23/82.png,200
/map/1.0.0/cd/base/2/48/154.png?fefsfes,200
/map/1.0.0/cd/base/3/45/433.png?gtdrdrg,200
어떻게든 열을 가져 awk '{ print $1}'
와서 마지막 숫자 이후의 모든 항목을 삭제할 수 있나요?
원하는 결과:
/map/1.0.0/cd/base/4/23/82,200
/map/1.0.0/cd/base/2/48/154,200
/map/1.0.0/cd/base/3/45/433,200
답변1
awk 명령의 본질을 유지하려면 sub
불필요한 후행 부분을 간단히 제거 하면 됩니다.$1
awk '{sub(/\.png.*$/,"",$1); print $1","$2}' file
아니면 (아마도 더 서투르게)
awk '{sub(/\.png.*$/,"",$1)}1' OFS=, file
답변2
다음 awk 솔루션을 시도해 볼 수 있습니다.
awk 'BEGIN{FS=".png| "} {print $1,$NF}' kk.txt |tr ' ' ','
여러 필드 구분 기호를 사용하세요.