Bash를 사용하여 십진수 텍스트 파일을 삭제하는 방법

Bash를 사용하여 십진수 텍스트 파일을 삭제하는 방법

이런 텍스트 파일이 있어요

172.16.0.30,42056.0
172.16.0.30,42058.0
172.16.0.30,42060.0

출력할 포트의 10진수를 제거하고 싶습니다.

172.16.0.30,42056
172.16.0.30,42058
172.16.0.30,42060

어떻게 해야 하나요?

답변1

포트의 소수가 모두 고정 길이인 경우 다음을 사용할 수 있습니다.이 답변

echo ${line%%??}

여기서 숫자는 ?삭제할 고정 문자 수에 해당합니다.

또는 다음을 사용할 수 있습니다.

echo ${line%.*}

~에서이 bash 참조, %방법:

$string의 끝에서 $substring과 가장 짧은 일치 항목을 제거합니다.

"가장 짧다"는 것을 알고 있지만 더 작은 옥텟과 더 긴 포트 십진수(예: 1.1.1.1,42056.0000)가 있는 IP를 사용해도 문제가 없었습니다.

파일을 반복하려면 다음 명령을 사용할 수 있습니다.첫 번째 검색 결과덕덕고에서)

while IFS= read -r line; do echo $line; done < input_file

위의 내용을 사용하고 결과를 새 파일에 추가하면 한 가지 방법은 다음과 같습니다.

while IFS= read -r line; do echo ${line%.*} >> trimmed_file; done < input_file

관련 정보