awk의 printf나 심지어 bash의 printf를 사용하여 열의 모든 숫자를 소수점 이하 1자리로 반올림하는 깔끔하고 간단한 방법이 많이 있는 것 같습니다. 그러나 열의 모든 숫자를 소수점 이하 1자리로 줄이는(반올림하지 않는) 똑같이 간단한 방법을 찾을 수 없습니다. 현재 이를 정렬하는 가장 간단한 방법은 소수점 이하 2자리로 반올림한 다음 열 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]*
캡처 그룹이 삭제된 후
추가 자료: