이런 텍스트 파일이 있어요
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