sort -n을 사용하여 정렬된 파일이 있습니다. 그런데 gnuplot에서 표면 플롯을 그리려면 첫 번째 열의 값이 다른 행 사이에 빈 행이 필요합니다. 예를 들어
1.0
1.0
1.1
1.1
도착하다:
1.0
1.0
1.1
1.1
Ubuntu Linux를 사용하여 이를 쉽게 수행할 수 있는 방법이 있습니까?
답변1
나는 다음과 같이 쓸 것입니다 :
awk 'NR > 1 && $0 != last {print ""}
{print; last = $0}' < your-file
행이 숫자로 구성되어 있는 한 $0 != last
이는숫자or 또는 or와 동일하게 비교합니다 1.0
(반드시 0x1일 필요는 없지만 소수 구분 기호 처리(1.0 대 1,0)에 대한 로캘의 잠재적인 영향도 참고). 어휘 비교를 보장하려면 로 변경하세요.1
1e0
1.00
$0 "" != last
awk
구현 에 따라 이는 memcmp()
(바이트 대 바이트 비교), strcmp()
(동일하지만 NUL 바이트를 처리할 수 없음), strcoll()
(두 문자열 모두 동일하게 정렬) 또는 wcsncmp()
(바이트 대 단어 섹션이 아닌 문자 대 문자)를 적용합니다. ) 비교(입력에 십진수와 마침표 문자만 포함된 경우 모두 동일해야 합니다).
바이트 간 비교를 강제하려면 로캘을 C로 수정하세요.
LC_ALL=C awk 'NR > 1 && $0 "" != last {print ""}
{print; last = $0}' < your-file
(또한 일부 awk
구현에서는 NUL 문자를 차단합니다).
답변2
다음과 같은 작업이 수행됩니다.
awk 'BEGIN {A=""} {if ($0!=A) { printf "\n%s\n", $0; A=$0} else print $0}'
A의 초기화 값을 선택할 때 기존 값에 속하지 않도록 주의하세요.