替换文件内容
sed ‘s/192/168/g’ test.txt 将192替换成168 这个只是预替换,其实真正的文件是没有被替换的
sed -i ‘s/192/168/g’ test.txt 加上 " -i " 文件里的内容是被替换成功的
在文件开头或结尾添加字符
sed ‘/liuchuang/i ################’ oooooooooo.txt 这个意思是在文件内容开头加入 " i " 指的是文章开头
sed ‘/liuchuang/a ################’ oooooooooo.txt 这个意思是在文件内容末尾加入 " a " 指的是文章开头
打印某一行内容
[root@vovo1 ~]# sed -n ‘/liuchuang/p’ oooooooooo.txt 加入 “ -n ” “ p ” 的意思打印 也就是 print
my name is liuchuang
按顺序打印,或者指定某一行打印
[root@vovo1 ~]# sed -n ‘1p’ oooooooooo.txt
#name info
[root@vovo1 ~]# sed -n ‘1,5p’ oooooooooo.txt
#name info
##############
#######
my name is liuchuang
tset
如何在一组数据中打印出最大和最小的数据。
[root@vovo1 ~]# cat shuzi.text 首先是查看文件的数据情况
132213
2222
333
44121 131
1313123313
222
444
[root@vovo1 ~]# cat shuzi.text |sed 's/ /\n/g' 在这里将杂乱文章的数据排列,变成一个列表
132213 重点: 在sed 里边 "sed 's/ /\n/g " 里边 “ \n ” 代表换行符。
2222 而这个总体的命令意思就是将空的地方换成换行符
333
44121
131
1313123313
222
444
[root@vovo1 ~]# cat shuzi.text |sed 's/ /\n/g' | grep -v "^$" |sort -nr
1313123313 sort 本身就是进行排序的,而sort -nr 意思为将所有的数据从 大到小排序
132213 grep -v 是排除的意思,而后边加上 “ ^$” 在语句里边 “ ^ ” 意思为以什么为开头 “ $ ” 意思为以什么为结尾
44121
2222
444
333
222
131
[root@vovo1 ~]# cat shuzi.text |sed 's/ /\n/g' | grep -v "^$" |sort -nr | sed -n '1p;$p'
1313123313 而最后的在使用sed -n 指定打印,而此时打印的1p 就是最大的数字,而$p 指的就是最后一行。 $ 就是最后一个
131
grep 正则表达式。反斜杠,匹配,
以什么开头或者以什么结尾
[root@vovo1 ~]# grep "^172" oooooooooo.txt 正则表达式中以**开头的。在这里举例以172开头的 匹配出来 “ ^ ” 意思为以什么开头的
172.25.254.11
172.25.254.22
[root@vovo1 ~]# grep "11$" oooooooooo.txt 正则表达式中以**结尾的。在这里举例以11结尾的 匹配出来 “$ ” 意思为以什么结尾的
172.25.254.11
awk
[root@vovo1 ~]# cat /etc/passwd | sed 's/:/ /g' |awk '{print $1}' 打印出每一行的内容
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-bus-proxy
systemd-network
dbus
polkitd
tss
postfix
sshd
apache
在我们的awk中,可以使用awk筛选,而空格是域,一般在筛选的时候,如有其他的符号可以先将其他的符号换成空格,然后在用awk筛选,
[root@vovo1 ~]# cat jj.sh
my name is liuchuang
[root@vovo1 ~]# cat jj.sh | awk '{print $NF}' awk '{print $NF}' 这句话的意思为某一行的最后一个 print $NF打印最后一个
liuchuang
[root@vovo1 ~]# cat jj.sh | awk '{print $NF}' | sed 's/^/&01/' 在liuchuang前面加01,可以使用sed在后边直接,或者直接使用awk自身所带的awk '{print "01: "$NF}' 直接在其中双冒号加入所需要加入的东西
01liuchuang
[root@vovo1 ~]# cat jj.sh | awk '{print $NF}' | sed 's/^/&01: /'
01: liuchuang
[root@vovo1 ~]# cat jj.sh | awk '{print "01: "$NF}'
01: liuchuang
find
find . -maxdepth 1 -type f -name "*.txt" -mtime + 30 -maxdepth 级别查看,后边跟个1 意思为第一级别, -type 意思是什么类型,后边跟的是f 意思是文件,d 的意思是目录, -name 以名称寻找,后边跟着条件,-mtime 多久时间可以修改。后边加+30 的就是30天之前的文件
find . -maxdepth 1 -type f -name "*.txt" -mtime -1 意思一天之内可以修改的\
find . -maxdepth 1 -type f -name "*.txt" -mtime -1 -exec rm -rf {} \; 删除可以修改的
[root@vovo1 ~]# find . -maxdepth 1 -type f -name "*.txt" -mtime -3 -exec cp {} /mnt/ \; 复制三天前的文件,到/mnt目录下
[root@vovo1 ~]# ll /mnt/list.txt
-rw-r--r-- 1 root root 129 Oct 24 21:32 /mnt/list.txt
移动指定大小的文件
[root@vovo1 ~]# find . -maxdepth 1 -size +1M -type f -exec mv {} /mnt/ \;
整体的意思为移动当前一级目录大于1M的文件到/mnt目录下