【牛客刷题】SHELL练习

Shell简介

教程

Linux 的 Shell 种类众多,常见的有:

Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。

1、使用文本编辑器(vi/vim命令创建文件),以.sh为文件的扩展名(php写的就.php)

#!/bin/bash
echo "Hello World !"
所用命令含义
#!用于告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell
echo用于向窗口输出文本

2、运行Shell的两种方式

运行shell使用方式
可执行脚本chmod +x ./test.sh #使脚本具有执行权限 AND ./test.sh #执行脚本
作为解释器参数/bin/sh test.sh OR /bin/php test.php

变量

定义变量(包括第二次赋值)的时候不需要加美元符号,
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

your_name="qinjx"
echo $your_name
echo ${your_name} #加花括号是为了帮助解释器识别变量的边界

传参

可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

SHELL1-统计文件行数

wc命令:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

wc命令

-c # 统计字节数,或--bytes或——chars:只显示Bytes数;。
-l # 统计行数,或——lines:只显示列数;。
-m # 统计字符数。这个标志不能与 -c 标志一起使用。
-w # 统计字数,或——words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L # 打印最长行的长度。
//真实案例
wc -l nowcoder.txt;
运行结果为:4 nowcoder.txt;包含文件名,改用:
通过输入流:
wc -l < nowcoder.txt
通过管道
cat nowcoder.txt | wc -l
运行结果为:4

SHELL2-打印文件的指定行数

-n 输出行
-c 输出字节

tail命令:从文件尾部进行查询

tail
1、tail -f nowcoder.txt : 实时输出文件的最新更新内容;
2、tail -n 5 nowcoder.txt [或者:tail -5 nowcoder.txt] : 输出文件的最后5行;
3、tail -n +5 nowcoder.txt : 输出从第5行开始到文件结尾的内容;
4、tail -n -5 nowcoder.txt : 输出从倒数 第五行开始到文件结尾的内容;
5、tail nowcoder.txt : 不加任何参数,默认输出10行;
6、tail -c 5 nowcoder.txt : 表示输出文件最后5个字节;

head命令:从文件头部进行查询

head

SHELL3-输出0到500中7的倍数

seq 0 7 500

根本没用上循环。。。

seq命令:用于产生从某个数到另外一个数之间的所有整数

都是格式设置:
-f 
seq -f "str%03g" 9 11
str009
str010
str011
-s 指定分隔符
-w 输出同宽

SHELL4-输出第5行

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

SHELL5-打印空行的行号

grep -n '^$' nowcoder.txt | awk -F: '{print $1}'
#grep输出带:,使用awk以引号作为分隔,输出数据。
awk '/^$/{print NR}' nowcoder.txt
sed -n '/^$/=' nowcoder.txt

/^$/表示空字符串即该行是空字符串即空行
{}是对匹配的行执行的命令 NR是行号,即匹配行的行号

awk命令:是一种处理文本文件的语言,是一个强大的文本分析工具。

用法一:awk '{[pattern] action}' {filenames}
用法二:awk -F  #-F相当于内置变量FS, 指定分割字符
用法三:
支持正则的表达式:grep;sed;egrep;awk
grep
-n :表示显示行号 xx:(输出带引号)
-i :表示不区分大小写
-v :表示反向过滤(取反)
[ ]:查找集合字符

SHELL6-去掉空行

awk '{if(!/^$/)print $NR}' nowcoder.txt
#$NR代表输出NR行(当前行)的内容
grep -v '^$' nowcoder.txt
sed '/^$/d' .txt
#-v 删除行

SHELL7-打印字母数小于8的单词

SHELL8-统计所有进程占用内存大小的和

SHELL9-第二例是否有

SHELL10-第二列是否有重复

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值