Linux脚本练习之script062-输出第5行的内容

script062

题目

题目来源于 SHELL4 输出第5行的内容

写一个 bash脚本以输出一个文本文件 nowcoder.txt 中第5行的内容。

示例, 假设 nowcoder.txt 内容如下:

welcome
to
nowcoder
this
is
shell
code

你的脚本应当输出:

is

脚本一

使用 cat -n 命令显示文件每一行的行号和内容;然后使用 grep -E 命令通过正则表达式提取第五行;由于每一行同时显示了行号和内容,所以需要通过 awk 命令提取到原行内容,即第二个数据域。

cat -n nowcoder.txt | egrep '[ ]+5' | awk '{print $2}'
# 注:上面在网站测试不能通过,似乎不支持 egrep 命令,可以使用 grep -E 替代
cat -n nowcoder.txt | grep -E '[ ]+5' | awk '{print $2}'

脚本二

head -n 5 表示获取文件前五行的内容,而最后使用 tail -n 1 表示获取最后一行的内容,通过管道符将前面的命令的结果传递给 tail 命令就可以提取到前五行内容的最后一行内容,即第五行的内容。

 head -n 5 nowcoder.txt | tail -n 1

脚本三

sed 命令可以通过 '5p' 指定获得第五行的内容。

sed -n '5p' nowcoder.txt

脚本四

awk 命令也可以获取到指定行的内容,其中 NR 表示行号,NR==5 表示匹配第五行然后在后面的 {} 中输出。

awk 'NR==5{print $0}' nowcoder.txt

脚本五

还可以遍历文件中的所有行,通过一个自定义的变量记录行号,当行号为 5 时输出该行结果。

#!/bin/bash

i=0
while read line; do
  i=$((${i}+1))
  if [ $i -eq 5 ]; then
      echo "${line}"
      exit
  fi
done < nowcoder.txt

脚本六

还可以使用 awk 命令的编程判断第五行。

awk '{if(NR==5) print $0}' nowcoder.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值