uniq -c
cut
나중에 분리하기 어렵도록 항목을 공백으로 구분합니다 awk
.
1000_A1\tB1\n
___1_A2\tB2\n
sed -r 's/^ *([0-9]+)/\1\t/'
구분 기호를 탭으로 변경하여 이 문제를 해결할 수 있었습니다. 그런 다음 cut -f1
다음을 반환할 수 있습니다.
1000\tA1\tB1\n
1\tA2\tB2\n
uniq -c
그러나 탭을 사용하여 숫자를 구분하는 것이 일반적인 사용법인 것 같습니다. 이 기능이 누락된 이유는 무엇입니까? 다른 더 쉬운 방법이 있나요?
답변1
귀하의 형식이 비슷한 것 같고 <number><space><field 1 name><tab><field 2 name>
입력이 정렬되어 있는지 확인하고 싶습니다 field 1 name
. 원하는 경우 초기 숫자 부분을 제거하고 첫 번째 열의 나머지 부분이 정렬되어 있는지 확인하세요.
echo "$input" | sed -r 's/^ *[^ ]+ //' | sort -c -k1,1
답변2
awk
숫자를 구분하는 것이 왜 어렵다고 생각하는지 모르겠습니다 . awk '{print $1}'
인쇄에는 문제가 없습니다.
$ sort file | uniq -c
5 x
10 y
$ sort file | uniq -c | awk '{print $1}'
5
10
$
답변3
컷을 이용하면 쉽게 분리할 수 있습니다. 그냥 cut -d " " -f 1
번호를 얻고 cut -d " " -f 2-
나머지를 얻으려면 그것을 사용하십시오. awk는 공간이기 때문에 처리만 합니다.
답변4
데이터 열에 공백이 포함될 수 있는 경우 sed
탭을 사용하여 공백을 바꿀 수 있습니다.
sed -e 's/<5 white space chars>//' | sed -e 's/<1 white space chars>/\t/'
첫 번째는 sed
switch 에 의해 생성된 선행 공백을 대체하고 -c
, 두 번째는 개수와 첫 번째 데이터 열 사이의 공백을 대체합니다.