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

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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==5print $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

以上是关于Linux脚本练习之script062-输出第5行的内容的主要内容,如果未能解决你的问题,请参考以下文章

Linux脚本练习之script076-打印等腰三角形

Linux脚本练习之script076-打印等腰三角形

Linux脚本练习之script063-打印空行的行号

Linux脚本练习之script073-去掉不需要的单词

Linux脚本练习之script073-去掉不需要的单词

Linux脚本练习之script088-netstat练习之输出每个IP的连接数