awk의 printf나 심지어 bash의 printf를 사용하여 열의 모든 숫자를 소수점 이하 한 자리로 반올림하는 깔끔한 방법이 많이 있는 것 같습니다. 그러나 열의 모든 숫자를 소수점 이하 한 자리로 줄이는(반올림하지 않고) 똑같이 쉬운 방법을 찾을 수 없습니다. 지금까지 정렬하는 가장 쉬운 방법은 소수점 이하 두 자리로 반올림한 다음 열 1에 있는 각 행의 마지막 문자를 제거하는 것입니다. 누구든지 더 좋은 방법이 있습니까? 입력 및 출력의 예는 다음과 같습니다.
입력하다
123.434
1456.8123
2536.577
345.95553
23643.1454
산출
123.4
1456.8
2536.5
345.9
23643.1
답변1
작업하기가 매우 쉽습니다.grep
$ cat ip.txt
123.434
1456.8123
2536.577
345.95553
23643.1454
$ grep -o '^[0-9]*\.[0-9]' ip.txt
123.4
1456.8
2536.5
345.9
23643.1
^
줄의 시작[0-9]*
0개 이상의 숫자\.
리터럴 도트 문자 일치[0-9]
숫자와 일치-o
옵션 으로 인해grep
일치하는 부분만 인쇄되어 나머지 문자는 효과적으로 제거됩니다.
추가 열이 있는 경우sed
$ cat ip.txt
123.434 a
1456.8123 b
2536.577 c
345.95553 d
23643.1454 e
$ sed -E 's/^([0-9]*\.[0-9])[0-9]*/\1/' ip.txt
123.4 a
1456.8 b
2536.5 c
345.9 d
23643.1 e
-E
확장 정규식 사용- 필요한 패턴은 교체 구간에 캡쳐하여
()
사용\1
[0-9]*
캡처 그룹이 삭제된 후
추가 자료: