read
- 利用read传参判断
echo -n "please input your score:"
read score
#read -p "please input a score:" score
if [ "$score" -ge "0" ]&&[ "$score" -lt "60" ];then
echo "sorry,you are lost!"
elif [ "$score" -ge "60" ]&&[ "$score" -lt "85" ];then
echo "just soso!"
elif [ "$score" -le "100" ]&&[ "$score" -ge "85" ];then
echo "good job!"
else
echo "input score is wrong , the range is [0-100]!"
fi
diff与patch命令
diff通常比较文件内容,patch常用来打补丁
< 表示第一个文件的内容
> 表示第二个文件的内容
a 表示添加 ---add
c 表示更改 ---change
d 表示删除 ---delete
- 用法
diff命令的格式一般为:
diff [参数][文件或者目录1][文件或者目录2]
例如,有文件file11和filet2:
[root@server1 diff]# cat file1
123
abc
[root@server1 diff]# cat file2
123
[root@server1 diff]# diff file2 file1
1a2
> abc
diff命令也可以比较两个文件夹的不同:
我们将file1和file2分别放入两个文件夹中
[root@server1 diff]# mkdir test{1..2}
[root@server1 diff]# mv file1 test1
[root@server1 diff]# mv file2 test2
[root@server1 diff]# diff -r test2 test1
Only in test1: file1
Only in test2: file2
diff -u file1 file2
-u 以合并的方式来显示文件内容的不同。即统一格式的输出。在合并中也使用的是这种模式。用来产生补丁
[root@server1 diff]# diff -u file1 file2
--- file1 2020-02-16 10:51:51.852623166 +0800
+++ file2 2020-02-16 10:52:34.465424216 +0800
@@ -1,2 +1 @@
123
-abc
[root@server1 diff]# diff -u file1 file2 > file1.path
[root@server1 diff]# cat file1.path
--- file1 2020-02-16 10:51:51.852623166 +0800
+++ file2 2020-02-16 10:52:34.465424216 +0800
@@ -1,2 +1 @@
123
-abc
[root@server1 diff]# patch file1 file1.path
patching file file1
[root@server1 diff]# cat file1
123
[root@server1 diff]# cat file2
123
如果需要原文件备份
patch -b file1 file1.path
会在当前目录下新增一个名为file1.orig的文件,其内容就是原文件内容
cut命令
-
定义
cut是一个选取命令,选取文件中的指定字符,主要有如下用途
(1)文件内容查看
(2)显示行中的指定部分,删除文件中指定字段
(3)显示文件的指定内容。
-
语法格式
cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]
使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
第一,字节(bytes),用选项-b
第二,字符(characters),用选项-c
第三,域(fields),用选项-f
主要参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。
-
举例
[root@server1 cut]# cut -d : -f 1 passwd #显示passwd第一列
[root@server1 cut]# cut -c 1-3 passwd #显示passwd第一到三个字符
sort与uniq命令
sort命令通常用来排序,uniq命令对重复字符做相应处理
sort语法:
sort [选项] ... [文件] ...
选项:
-n:纯数字排列
-r:倒序
-u:去重
-o:输出到指定文件
-t:分隔符
-k:指定要排序的列
-f:忽略大小写。
文件:
file:多个文件要使用空格分隔。
uniq
-c:每行显示一次并统计重复行数
-d:显示重复的行
[root@server1 sort-uniq]# sort -n num | uniq -c #排序后并显示重复次数
2 1
2 2
1 4
1 5
1 7
1 23
[root@server1 sort-uniq]# sort -n num | uniq -d #排序后显示重复行
1
2
[root@server1 sort-uniq]# sort -n num | uniq -u #排序后显示不重复的行
4
5
7
23
[root@server1 sort-uniq]# sort -n -k 4 -t ':' passwd | cut -d ':' -f 4
[root@server1 sort-uniq]# cat info
lisi 170 25 6000
wangwu 170 28 5000
zhangsan 175 20 5000
zhangxiaoliu 165 30 6000
[root@server1 sort-uniq]# sort -n -k 1 -t ' ' info
lisi 170 25 6000
wangwu 170 28 5000
zhangsan 175 20 5000
zhangxiaoliu 165 30 6000
[root@server1 sort-uniq]# sort -n -k 2 -t ' ' info
zhangxiaoliu 165 30 6000
lisi 170 25 6000
wangwu 170 28 5000
zhangsan 175 20 5000
join命令
功能说明:将两个文件中,指定栏位内容相同的行连接起来。
语 法:join [-i][-a<1或2>][-e<字符串>][-o<格式>] [-t<字符>][-v<1或2>][-1<栏位>][-2<栏位>][--help] [--version][文件1][文件2]
补充说明:找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
参 数:
-a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
-e<字符串> 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。
-i或--igore-case 比较栏位内容时,忽略大小写的差异。
-o<格式> 按照指定的格式来显示结果。
-t<字符> 使用栏位的分隔字符。
-v<1或2> 跟-a相同,但是只显示文件中没有相同栏位的行。
-1<栏位> 连接[文件1]指定的栏位。
-2<栏位> 连接[文件2]指定的栏位。
--help 显示帮助。
--version 显示版本信息。
-
举例
[root@server1 join]# join file1 file2
www http nginx
123 gaoqi 20
[root@server1 join]# cat file1
www http
123 gaoqi
h
[root@server1 join]# cat file2
www nginx
123 20
1
2
[root@server1 join]# cat file3
A li:20:women
B wang:18:men
C zhang:21:men
[root@server1 join]# cat file4
A li:song
B wang:dance
C zhang:paint
[root@server1 join]# join file3 file4
A li:20:women li:song
B wang:18:men wang:dance
C zhang:21:men zhang:paint
[root@server1 join]# join -t ':' file3 file4 #指定分隔符
A li:20:women:song
B wang:18:men:dance
C zhang:21:men:paint
seq命令
是一个序列缩写主要用来输出序列化的东西
- 用法
seq [选项]... 尾数
seq [选项]... 首数 尾数
seq [选项]... 首数 增量 尾数
-s 指定分隔符,默认/n
-w 在列前添加0,自动补位
-f 用printf样式的符点格式
- 举例
[root@server1 sort-uniq]# seq -w -s ' ' 10
01 02 03 04 05 06 07 08 09 10
[root@server1 sort-uniq]# seq -2 2 10
-2
0
2
4
6
8
10
[root@server1 sort-uniq]# seq -f "%03g" 98 101
098
099
100
101
[root@server1 sort-uniq]# seq -f "%3g" 98 101
98
99
100
101
tr命令
命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。
-
语法
tr(选项)(参数)
-
选项
-c或——complerment:取代所有不属于第一字符集的字符; -d或——delete:删除所有属于第一字符集的字符; -s或--squeeze-repeats:把连续重复的字符以单独一个字符表示; -t或--truncate-set1:先删除第一字符集较第二字符集多出的字符。
-
参数
字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”;
字符集2:指定要转换成的目标字符集。
-
实例
将输入字符由大写转换为小写:
echo "HELLO WORLD" | tr 'A-Z' 'a-z'
hello world
使用tr删除字符:
echo "hello 123 world 456" | tr -d '0-9'
hello world
将制表符转换为空格:
cat text | tr '\t' ' '
字符集补集,从输入文本中将不在补集中的所有字符删除:
echo aa.,a 1 b#$bb 2 c*/cc 3 ddd 4 | tr -d -c '0-9 \n'
1 2 3 4
此例中,补集中包含了数字0~9、空格和换行符\n,所以没有被删除,其他字符全部被删除了。
用tr压缩字符,可以压缩输入中重复的字符:
echo "thissss is a text linnnnnnne." | tr -s ' sn'
this is a text line.
tr可以使用的字符类:
[:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符 [:digit:]:数字 [:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符 [:punct:]:标点符号 [:space:]:空白字符 [:upper:]:大写字母 [:xdigit:]:十六进制字符
xargs命令
xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,
https://www.runoob.com/linux/linux-comm-xargs.html