LeetCode:Shell題目

題目一:Tenth Line

輸出文件的第10行

方法一:bash

#!/bin/bash
var=1
while read line && [ $var -le 10 ]
do
    if [ $var -eq 10 ]
    then
        echo $line
        exit 0
    fi
    let var++
done < file.txt

方法二:tail與head組合

tail -n +10 file.txt | head -n 1

方法三: awk

awk 'FNR == 10 {print }'  file.txt

方法四:sed

sed -n 10p file.txt

題目二:Transpose File

將文本的行變成列列變成行
方法一:awk

awk '
    {
        for(i=1;i<=NF;i++)
        {
            if(line[i]=="")
            {
                line[i]=$i
            }
            else
            {
                line[i]=line[i]" "$i
            }
        }
    }
    END{
        for(i=1; i<=NF ;i++)
        {
            print line[i]
        }
    }
    ' file.txt

方法二:bash

array=()

while read -a columns; do
    for (( i = 0; i < ${#columns[@]}; i++ )); do
        array[i]="${array[i]} ${columns[i]}"
    done
done < file.txt

for (( i = 0; i < ${#array[@]}; i++ )); do
    echo ${array[i]}
done

題目三:Valid Phone Numbers

判斷是否是合法的電話號碼
方法一:grep

grep -P '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt

方法二:awk

awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt

方法三:sed

sed -n -r '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/p' file.txt

題目四:Word Frequency

統計單詞的頻率,降序輸出
方法一:awk

awk '
{
    for(i=1;i<=NF;i++)
        words[$i]++

} 
END{
    for(word in words)
    {
        print word,words[word]

    }

}' RS="[ \n]+" words.txt  | sort -nrk2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章