查看文件的前n行

可以使用head命令,如

head -5 filename

查看文件的后n行

可以使用tail命令,如

tail -5 filename
tail -n 5 filename

查看文件中间一段

例如只查看文件的第5行到第20行,可以使用sed命令,如

sed -n ‘5,20p’ filename

查看空白行的行号

awk '/^$/{print NR}' nowcoder.txt

这一命令的格式是awk 'pattern{命令}'

  • /^$/匹配空行,^表示行的开头,$表示行的结尾,使用正则表达式
  • NRawk内置的变量,代表当前行号

输出非空白行的内容

awk '!/^$/ {print}' nowcoder.txt

打印长度小于n的单词

awk -F" " '{for(i=1;i<=NF;i++){if(length($i) < 8){print $i}}}' nowcoder.txt
  • -F" "选项表示用空格作为分隔符
  • NF是内置变量,代表当前行的字段数量,字段根据-F指定的分隔符拆分,保存在内置变量$1,$2,$3...

打印每行包含数字1-5的个数

#!/bin/bash

linecount=0
sum=0
count=0

while read line; do                             # 读一行
	for ((i = 0; i < ${#line}; i++)); do        # ${#line}取数组长度,开始遍历
		if [[ ${line:$i:1} =~ [1-5] ]]; then    # ${line:$i:1}为获取line中从$i开始的长度为1的字符串切片,判断是否属于1-5,=~是二元运算符,测试字符串是否匹配正则表达式
			count=$(($count + 1))
		fi
	done
	linecount=$(($linecount + 1))               # 行数+1
	echo "line$linecount number:$count"
	sum=$(($sum + $count))
	count=0

done <nowcoder.txt
echo "sum is $sum"

用*打印等腰三角形

#!/bin/bash

read n
for((i=1;i<=n;i++))
do
    for((j=n-i;j>=1;j--))
    do
        printf " "
    done
    for((k=1;k<=i;k++))
    do
        printf "* "
    done
    printf "\n"
done