192到195题

    xiaoxiao2021-03-25  234

    192. Word Frequency

    Write a bash script to calculate the frequency of each word in a text file words.txt.

    For simplicity sake, you may assume:

    words.txt contains only lowercase characters and space ' ' characters.Each word must consist of lowercase characters only.Words are separated by one or more whitespace characters.

    For example, assume that words.txt has the following content:

    the day is sunny the the the sunny is is Your script should output the following, sorted by descending frequency: the 4 is 3 sunny 2 day 1

    Note: Don't worry about handling ties, it is guaranteed that each word's frequency count is unique.

    统计各个单词的出现的次数。先用tr把单词都分成单独的行。然后用gawk统计每个单词的个数,最后用sort根据第二个值(也就是个数)从大到小排序:

    cat $1 | tr -s ' ' '\n' | gawk '{count[$1]++}END{for(word in count) print word,count[word]}' | sort -rn -k2

    193. Valid Phone Numbers

    Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bash script to print all valid phone numbers.

    You may assume that a valid phone number must appear in one of the following two formats: (xxx) xxx-xxxx or xxx-xxx-xxxx. (x means a digit)

    You may also assume each line in the text file must not contain leading or trailing white spaces.

    For example, assume that file.txt has the following content:

    987-123-4567 123 456 7890 (123) 456-7890 Your script should output the following valid phone numbers: 987-123-4567 (123) 456-7890

    Subscribe to see which companies asked this question.

    判断给出的号码是否是合法的号码。用gawk配合正则表达式来匹配:

    cat file.txt | gawk --re-interval '/^(\([0-9]{3}\)[ ]|[0-9]{3}-)[0-9]{3}-[0-9]{4}$/{print $0}'

    194. Transpose File

    Given a text file file.txt, transpose its content.

    You may assume that each row has the same number of columns and each field is separated by the ' ' character.

    For example, if file.txt has the following content:

    name age alice 21 ryan 30

    Output the following:

    name alice ryan age 21 30

    Subscribe to see which companies asked this question.

    相当于矩阵的转置,用line数组记录下每一列,然后输出每一列即可。这里要注意的是每一行最后不能有空格:

    gawk '{ 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

    195. Tenth Line

    How would you print just the 10th line of a file?

    For example, assume that file.txt has the following content:

    Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10 Your script should output the tenth line, which is: Line 10

    [show hint]

    Subscribe to see which companies asked this question.

    输出文件中的第十行,用sed可以很方便的实现:

    sed -n '10p' file.txt

    转载请注明原文地址: https://ju.6miu.com/read-1066.html

    最新回复(0)