Linux 系统中,有一个文本文件 nowcoder.txt,其中内容格式如下: Hello JD JD Now C++ Python JD 需要将包含“JD”字符串的行号输出(行号从1开始,不考虑没有“JD”的情况),输出格式如下: 1 2 4 请你编写Shell程序实现上述功能。
Hello JD JD Now C++ Python JD
1 2 4
考点:Shell 文本处理
限制 1 秒 / 256MB | Shell 脚本题
本题是 Shell 文本处理题:给定一个文本文件 nowcoder.txt,要求用 shell 命令完成指定的文本变换或统计。
建议步骤
NR>1 跳过)。awk,逐行变换用 while read,简单替换用 sed,筛选行用 grep。常用命令速查
awk '{print $1, $2}' nowcoder.txtawk 'NR>1{...}'sed 's/old/new/g'grep -n "pattern"awk '{for(i=1;i<=NF;i++) if(length($i)>5) print $i}'awk '{for(i=1;i<=NF;i++) a[i]=a[i]" "$i} END{for(i=1;i<=NF;i++) print a[i]}'sed -E 's/([0-9]{3})[0-9]{4}([0-9]{4})/****/g'易错点
cut -d" " 会切出空字段,改用 awk 更稳。g,只替换了每行的第一处。解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2023年秋招-京东-技术通用岗位-第六批笔试。