Shell_QA

简介

下面的shell题,比较有难度,特此记录下。

shell

统计词频 将一个文本中的单词的出现频率统计出来

下面是从ssh配置文件中复制过来的一段,当作words.txt中的内容,
words.txt

The strategy used for options in the default sshd_config shipped with
OpenSSH is to specify options with their default value where
possible, but leave them commented. Uncommented options override the
default value.

你的脚本应当输出(以词频降序排列):

options 3
default 3
with 2
the 2
where 1
value. 1
value 1
used 1
Uncommented 1
to 1
them 1

  • 答案
1
2
3
awk  '{for(i=1;i<= NF;i++){words[$i]++}}END{for(w in words){print w,words[w]}}'  w.txt |sort -rn -k 2

for i in $(cat w.txt);do echo $i;done|sort |uniq -c|sort -rn|awk '{print $2,$1}'
统计合格的手机号码

w.txt
987-123-4567
123 456 7890
(123) 456-7890

1
grep -P '^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$' w.txt
sort对IP进行排序
1
2
3
4
5
6
7
8
9
10
# cat w.txt 


10.0.3.149
10.0.1.71

# sort -t "." -k1n,1 -k2n,2 -k3n,3 -k4n,4 w.txt



转置文件

假设 file.txt 文件内容如下:

name age
alice 21
ryan 30

应当输出:

name alice ryan
age 21 30

答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
awk '{
for (i=1;i<=NF;i++){
if (NR==1){
res[i]=$i
}
else{
res[i]=res[i]" "$i
}
}
}END{
for(j=1;j<=NF;j++){
print res[j]
}
}' file.txt

作者:gao-si-huang-bu
链接:https://leetcode-cn.com/problems/transpose-file/solution/awkming-ling-yong-shu-zu-chu-cun-dai-shu-chu-jie-g/
来源:力扣(LeetCode)

网站

leetcode


Shell_QA
https://imwang77.github.io/2020/05/10/Shell_QA/
作者
imwang77
发布于
2020年5月10日
更新于
2024年1月3日
许可协议