1.统计词频

题目描述

假设 words.txt 内容如下:
the day is sunny the the
the sunny is is
你的脚本应当输出(以词频降序排列):
the 4
is 3
sunny 2
day 1

解答:

cat words.txt | tr -s " " "\n" |sort|uniq -c|sort -r|awk '{ print $2" "$1}'

tr 替换字符 -s : 分割成 list
sort 排序
uniq 去重 -c 输出 每个字符出现的次数
sort -r 从小到大排序
awk 行处理函数,对每一行进行过滤 $1 表示取每行的第一个参数

有效电话号码

题目描述

有效电话号码
示例:

假设 file.txt 内容如下:

987-123-4567
123 456 7890
(123) 456-7890
你的脚本应当输出下列有效的电话号码:

987-123-4567
(123) 456-7890

解答

grep "^\(([0-9]\{3\}) \|[0-9]\{3\}-\)[0-9]\{3\}-[0-9]\{4\}$" file.txt

转置文件

题目描述

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

name age
alice 21
ryan 30
应当输出:

name alice ryan
age 21 30

COLS=`head -1 file.txt | wc -w`
# 使用awk依次去输出文件的每一列的参数,然后用xargs做转置
for (( i = 1; i <= $COLS; i++ )); do
# 这里col就是在代码里要替换的参数,而它等于$i
    awk -v col=$i '{print $col}' file.txt | xargs
done

 head -1 取最后一行
 wc -w 统计列数 -l 统计行数
 awk -v col=$1 设置变量 
 xargs 将多行转成一行输出

第十行

题目描述

假设 file.txt 有如下内容:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
你的脚本应当显示第十行:

Line 10

解答

count=`cat file.txt | wc -l`
out=`cat file.txt | head -10 | tail -1`
if [ $count -lt 10 ]
then 
    echo ""
else echo $out
fi

head -10 |tail -1 取最后10行的最后一行
-lt 小于










最后修改:2021 年 09 月 10 日
如果觉得我的文章对你有用,请随意赞赏