예상치 못한 값 정렬 및 잡기(쉘 스크립트)

예상치 못한 값 정렬 및 잡기(쉘 스크립트)

.csv 파일이 있고 세 번째 열에는 YES 및 NO 값만 예상됩니다.

Sample1|Sample2|YES
Sample1|Sample2|YES
Sample1|Sample2|YES
Sample1|Sample2|YES
Sample1|Sample2|NO
Sample1|Sample2|MAYBE(random*)
Sample1|Sample2|MAYBE(random*)

참고: (random*)여기에 존재할 수 있는 임의의 값을 나타냅니다.

따라서 내가 원하는 결과는 다음과 같아야 합니다.

Expecting value count: 5
YES = 4
NO = 1

Not expecting value count: 2
MAYBE = 2

YES와 NO 이외의 값이 없으면 내가 원하는 출력은 다음과 같아야 합니다.

Expecting value count:
YES = 4
NO = 1
Not expecting value count: 0

답변1

어쩌면 다음과 같은 것일 수도 있습니다.

tr '(' '|' < file | cut -d'|' -f3 | sort | uniq -c

답변2

AIX 호환 awk 솔루션은 다음과 같습니다.

BEGIN {
  FS="|";
}
{
  values[$3]++
}
END {
  print "Expecting value count: " values["YES"] + values["NO"];
  print "YES = " values["YES"];
  print "NO = " values["NO"];
  delete values["YES"];
  delete values["NO"];
  for (value in values)
    unexpected += values[value];
  if (unexpected) {
    print "\nNot expecting value count: " unexpected;
    for (value in values)
      print value " = " values[value];
  }
}

이름을 지정하려는 스크립트에 저장하세요.

이 예에서는 다음을 입력합니다.

Sample1|Sample2|YES
Sample1|Sample2|YES
Sample1|Sample2|YES
Sample1|Sample2|YES
Sample1|Sample2|NO
Sample1|Sample2|MAYBE1
Sample1|Sample2|MAYBE2
Sample1|Sample2|MAYBE2

...출력은 다음과 같습니다.

$ awk -f i.awk < input
Expecting value count: 5
YES = 4
NO = 1

Not expecting value count: 3
MAYBE1 = 1
MAYBE2 = 2

...이 예제 입력의 경우:

Sample1|Sample2|YES
Sample1|Sample2|NO
Sample1|Sample2|NO

...출력은 다음과 같습니다.

$ awk -f i.awk < input2
Expecting value count: 3
YES = 1
NO = 2
Not expecting value count: 0

답변3

for i in $(cat l.txt  | awk -F "|" '{print $3}' | sort | uniq); do
  grep -c $i l.txt;
  echo $i;
done | sed "N;s/\n/ /g"

l.txt에는 언급한 내용이 포함되어 있습니다. 출력은 다음과 같습니다

2 MABYE(random)
1 NO
4 YES

예상 및 예상치 못한 결과를 계산하려면 출력을 파일에 저장하고 예상에 대한 이전 명령의 출력 파일에 다음 명령을 사용할 수 있습니다.

egrep -i "NO|YES" |
awk '{print $1}' |
tr "\n"  " " |
awk '{print "echo" " " $1 " " "+" " " $2 }' |
sed 's/^/"/g' |
sed 's/$/"/g' |
awk '{print $0"|bc -l"}' |
sed 's/"echo/echo "/g' |
sh

관련 정보