0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

leetcode shell 三問シェル問題

Last updated at Posted at 2021-05-03

1、file.txtというテキストファイルを与えたら、このファイルの10行目だけを印刷してください。
例:
file.txtに次のようなものがあるとします。
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

スクリプトは10行目を表示します:
Line 10

sed -n '10p' file.txt

2、file.txtファイルを与えたら、その内容を転置します。
各列の数は同じで、各フィールドは' 'で区切られていると仮定することができます。
例:
file.txtファイルの内容が次のようになっているとします。
name age
alice 21
ryan 30

出力すべき:
name alice ryan
age 21 30

配列に格納して再出力:

cat file.txt| awk '{
    for(i=1;i<=NF;i= i + 1)
    if (data[i] != "") data[i] = data[i] " " $i 
    else data[i] = $i 
} END {
    for(str in data)
        print data[str]
}'

3、テキストファイルwords.txtの各単語の出現頻度を統計するためにbashスクリプトを書きます。

簡単のために、次のように仮定してみましょう。

words.txtには小文字と' 'だけが含まれている。
それぞれの単語は小文字だけで構成されている。
単語間は1つまたは複数のスペース文字で区切られています。
例:

words.txtの内容を次のようにする。

day day is sunny the the
the sunny is is

スクリプトは出力する必要があります(語順の降順):

the 4
is 3
sunny 2
day 1

説明:

同じ語数の単語を並べ替える問題は心配しないでください。それぞれの単語の出現頻度は一意です。

集計したら順番に並べて、アウトプットする。

cat words.txt | xargs -n 1 | awk '{
    if($1 in data)
        data[$1] = data[$1] + 1
    else
        data[$1] = 1
} END {for(str in data) print data[str],str}' | sort -rn | awk '{print $2, $1}'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?