0%

判断语句

使用test来进行判断

1
2
3
4
5
6
7
8
9
# test [选项] 文件
test -d /Users/zhanghe/desktop/user/shell
---------------------


示例:
#如果该文件是目录则输出yes,否则输出no
test -d /Users/zhanghe/desktop/user/shell && echo yes || echo no

阅读全文 »

流程控制

if条件判断

可以使用if来实现多路跳转,条件通常使用test命令

1
2
3
4
5
6
7
8
9
10
#if语句的语法
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi

如果then需要和if放在同一行的话,使用;分隔

fi用来结束if语句,相当于endif

阅读全文 »

统计命令

使用wc来进行统计

1
2
3
4
5
6
7
8
9
10
11
# wc [选项] 文件名
wc -l a
2 a
wc -w a
8 a

--------------
-l 统计行数
-w 统计单词数
-m 统计字符数
-c 统计字节数

MySQL主从复制

由于数据的大量增加,访问量越来越复杂,有时候需要来部署多个数据库,通过数据库的复制策略,可以将一台mysql数据库服务器中的数据复制到其他的mysql数据库服务器之上,当各台数据库服务器上都包含相同数据的时候,前端应用通过访问mysql集群中任意一台服务器,都能够读取到相同的数据,这样,每台mysql服务器所需要承担的负载就会大大降低,从而提高整个系统的承载能力,达到系统扩展的目的

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,另外一个或多个其它服务器充当从服务器。

阅读全文 »

sed命令

sed是流编辑器,主要用于将数据进行选取、替换、删除、新增的命令,以批处理的方式而不是交互的方式来编辑文件,会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。

sed编辑器执行的操作:

  • sed读取文件是一次读取一行
  • 根据所提供的编辑器命令匹配数据
  • 按照命令修改流中的数据
  • 将新的数据输出(不会修改原始的文件)

语法格式为sed [选项] '[address][动作]' 文件名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#删除第二行
sed '2d' stu.txt
# 删除第一个冒号之后的所有东西
sed 's/:.*//' user.txt

# 多次替换
sed -e 's/foo/bar/g' -e 's/chicken/cow/g' test.txt > newtest.txt
# 多个命令也可以用分号隔开,而不使用多次-e
sed -e 's/foo/bar/g;s/chicken/cow/g' test.txt > newtest.txt


-----------------------
选项
-n 把经过sed命令处理的数据输出到屏幕,只输出p指令的行
-e 允许对输入数据应用多条sed命令,当有多个命令需要执行时,可以使用该选项
-f 脚本文件名 从sed脚本中读入sed操作,当有多个命令需要执行时,可以使用该选项
-r 在sed中支持正则
-i 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

动作
a \ 追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾都需要用\来表示数据未完结,append
c \ 行替换,用c后的字符串替换原数据行,替换多行时,除最后一行外,每行末尾都需要用\来表示数据未完结,change
i \ 插入,在当前行前插入一行或多行,插入多行时,除最后一行外,每行末尾都需要用\来表示数据未完结,insert
d 删除指定行,delete
p 打印,输出指定行
s 字符替换,用一个字符串替换另一个字符串。格式为'行范围s/旧字符串/新字符串/g' ,substuite
w 向文件写入行 sed '1,2w test.log' test.txt 会将前两行保存在test.log文件中

line address

默认动作会作用所有行,如果只想对指定行执行,需要用到行寻址(line address)

sed有两种行寻址形式

  • 使用数字形式表示行区间

    1
    2
    3
    4
    5
    6
    # 删除第二行
    sed '2d' stu.txt
    # 删除第二行和第三行
    sed '2,3d' stu.txt
    # 删除第二行至最后行,$表示最后行
    sed '2,$d' stu.txt
  • 用文本模式来过滤行,就是使用正则表达式

字符替换

1
2
# 去除双引号
sed -i 's/"//g' tmp_query.txt