Hey there people on the internet. Here's my solution for Awk - 1 Linux shell challenge from HackerRank. You can find answers to other Linux shell challenges via this link => https://blog.shasec.rocks/post/hackerrank-bash-challs. So let's get started. 

Challenge

> Objective

In this challenge, we practice using the awk command for text-munging and data processing tasks.

> Resources

Here's a useful video on the topic:

The awk interpreter may be used for a lot of text-munging and data-processing tasks that require some quick scripting work.

The following links show examples with awk:

Print Examples

Conditionals with Awk

> Task

You are given a file with four space separated columns containing the scores of students in three subjects. The first column contains a single character (A-Z), the student identifier. The next three columns have three numbers each. The numbers are between 0 and 100, both inclusive. These numbers denote the scores of the students in English, Mathematics, and Science, respectively.

Your task is to identify those lines that do not contain all three scores for students.

> Input Format

There will be no more than 10 rows of data.

Each line will be in the following format:

[Identifier][English Score][Math Score][Science Score]

> Output Format

For each student, if one or more of the three scores is missing, display:

Not all scores are available for [Identifier]

> Sample Input

A 25 27 50
B 35 75
C 75 78 
D 99 88 76

> Sample Output

Not all scores are available for B
Not all scores are available for C

> Explanation

Only 2 scores have been provided for student B and student C.

Solution

Have a look at these Awk Examples. Might be useful.

The idea is to check whether columns 2, 3, and 4 have an empty space. Here is my solution:

#!/bin/bash

awk '{
    if ($2=="" || $3=="" || $4=="" )
        print "Not all scores are available for", $1
}'
Blog Image
Figure 1.0: Solution passed all HackerRank tests cases

If you like content like this, please consider buying me a coffee.

Thank you for your support :)


👇 Share this post 👇


💬 Comment Section 💬