Điểm:0

chơi với lệnh awk đang cố xóa dòng đầu tiên trong đầu vào

lá cờ kg

dưới đây là tệp đầu vào của tôi, kết quả tiếp tục trả về "Giống có phiếu bầu"

    giống, bầu
    Phòng thí nghiệm đen, 30
    Chihuahua, 2
    Pug, 1
    Corgi, 45
    Shar Pei, 21
    Thạch Tử, 5
    tiếng Malta, 7

#!/bin/sh/awk
##comment Tập lệnh awk bên dưới chạy trên tệp dog_breed.txt, FS đề cập đến dấu tách trường trong trường hợp này là dấu phẩy. Chúng tôi khởi tạo biến max của mình thành 0 và max_breed cho giống đầu tiên, sau đó lặp qua các hàng để tìm giống được bình chọn nhiều nhất.
    
    BẮT ĐẦU{
            FS = ", "
            tối đa=0;
            max_breed=$1
    }
    {
            nếu(tối đa<($2)){
                    tối đa=$2;
                    max_breed=$1;
            }
    }
    CHẤM DỨT{
            in max_breed " có " tối đa " phiếu bầu"
    }
Điểm:1
lá cờ hr

Bạn có thể bỏ qua bản ghi (dòng) đầu tiên bằng cách thêm một quy tắc vào khối:

NR > 1 {
        nếu(tối đa<($2)){
                tối đa=$2;
                max_breed=$1;
        }
}

Tuy nhiên, bạn nên cố gắng hiểu tại sao bạn đạt được kết quả như vậy khi bạn đừng loại trừ dòng đầu tiên - đó là vì:

  • khi nào NR==1, giá trị của tối đa0 (số - được chỉ định trong BẮT ĐẦU khối) nhưng giá trị của $2phiếu bầu (là một chuỗi). Vậy biểu thức tối đa<($2) chuyển đổi tối đa thành một chuỗi và thực hiện so sánh từ điển. Nếu 0 ít hơn V bằng ngôn ngữ của bạn, thì kết quả là TRUE và tối đa được chỉ định Chuỗi giá trị phiếu bầu

  • cho các dòng tiếp theo, $2 là số, nhưng tối đa bây giờ là một chuỗi vì vậy $2 được chuyển đổi thành một chuỗi và một lần nữa so sánh là từ điển. Giả định V có trọng lượng từ điển lớn hơn bất kỳ chữ số nào 0 thông qua 9, V luôn luôn thắng.

Bên cạnh đó, shebang của bạn trông không hợp lệ - nó có thể là

#!/usr/bin/awk -f

hoặc

#!/bin/awk -f

tùy thuộc vào phiên bản Ubuntu của bạn. Ngoài ra, các nhiệm vụ như max_breed=$1 không thực sự có ý nghĩa trong một BẮT ĐẦU khối, vì nó được thực thi trước bất kỳ hồ sơ đã được xử lý.

Điểm:0
lá cờ cn

Để xóa dòng đầu tiên bằng awk:

awk 'NR>1' input_file

Hoặc sử dụng đuôi:

đuôi -n+2 tệp đầu vào
iwantcaketoo avatar
lá cờ kg
làm cách nào để tôi triển khai mã, khi tôi thêm mã, nó cho tôi một giá trị không chính xác
iwantcaketoo avatar
lá cờ kg
tôi biết tôi luôn có thể làm giống chó mèo.csv | đuôi -n+2 | awk -F',' 'BEGIN{breed="";votes=0;}{if($2>votes){votes=$2;breed=$1;}}END{print giống " có " phiếu bầu " phiếu bầu";} '
iwantcaketoo avatar
lá cờ kg
nhưng trạng thái hướng dẫn Trừ khi có quy định khác, tệp tập lệnh của bạn sẽ được kiểm tra trên hệ thống của chúng tôi bằng lệnh sau: awk -f

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.