1、文本处理命令sed:
- 替换
-
sed "s/原数据/新数据/" ⽂件名,仅把每⾏的第⼀个"原数据"替换为"新数据",不对原⽂件操作。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? [root@localhost ~]# sed "s/I/o/" a12.txt o love you you love me Do you love me?
- sed "s/原数据/新数据/g" 文件名,仅把每行的所有"原数据"替换为"新数据",不对原文件进行操作。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? [root@localhost ~]# sed "s/o/I/g" a12.txt I lIve yIu yIu lIve me DI yIu lIve me
- sed "s/原数据/新数据/gi"文件名,仅把每行的所有的不区分大小写的"原数据"替换为"新数据",不对原文件进行操作。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# sed "s/o/I/gi" a12.txt I lIve yIu yIu lIve me DI yIu lIve me? Inly yIu
- sed "s/^s*//" 文件名,把每行开头的空白字符删掉 \s匹配空白字符。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# sed "s/^\s*//" a12.txt I love you you love me Do you love me? Only you
-
sed "s/原数据/新数据/" ⽂件名,仅把每⾏的第⼀个"原数据"替换为"新数据",不对原⽂件操作。
- 插入
- sed "i行数据" 文件名,在文件中每行的上面插入"行数据"。
[root@localhost ~]# cat a12.txt
I love you
you love me
Do you love me?
[root@localhost ~]# sed "i I love you" a12.txt
I love you
I love you
I love you
you love me
I love you
Do you love me?
[root@localhost ~]# - sed "ni行数据" 文件名,在文件中第n行的上面插入"行数据"。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? [root@localhost ~]# sed "2i Do you know?" a12.txt I love you Do you know? you love me Do you love me?
- sed "a 行数据"文件名,在文件中每行的下面插入"行数据"。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# sed "a Do you know?" a12.txt I love you Do you know? you love me Do you know? Do you love me? Do you know? Only you Do you know?
- sed "na 行数据" 文件名,在文件中第n行的下面插入"行数据"。
- 插入到最后一行sed '$a aaa' a1.txt
-
[root@localhost ~]# cat a1.txt I love you you love me Do you love me? [root@localhost ~]# sed "2a Do you know" a12.txt I love you you love me Do you know Do you love me? [root@localhost ~]# sed "5a aaaa" a12.txt I love you you love me Do you love me? [root@localhost ~]# sed "`wc -l a1.txt | cut -d ' ' -f1`a aaaa" a12.txt I love you you love me Do you love me? aaaa [root@localhost ~]#
- sed "i行数据" 文件名,在文件中每行的上面插入"行数据"。
- 删除
- sed "/^$/d" 文件名,删除文件中的空行。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# sed "/^$/d" a12.txt I love you you love me Do you love me? Only you
- sed "nd" 文件名,删除指定行。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# sed "1d" a12.txt I love you you love me Do you love me? Only you
- sed 'n,$d' 文件名,删除文件中的第n行到末行,注意必须使用单引号。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# sed '4,$d' a12.txt I love you
-
sed '$d' ⽂件名, 删除⽂件中末⾏ ,注意必须使⽤单引号。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# sed '$d' a12.txt I love you you love me Do you love me? Only you
-
sed "/^数据/d" ⽂件名, 删除⽂件中以指定的数据开头的行。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# sed "/^yo/d" a12.txt I love you Do you love me? Only you
- sed "/^$/d" 文件名,删除文件中的空行。
- 增强
-
sed -e "操作1" -e "操作2" .... ⽂件名, 对⽂件同时进行多步操作。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# sed -e "2a you love her" -e '/^$/d' a12.txt I love you you love her you love me Do you love me? Only you
-
sed -i ....⽂件名 对指定⽂件进⾏修改。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# sed -i "/^$/d" a12.txt [root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]#
-
sed -e "操作1" -e "操作2" .... ⽂件名, 对⽂件同时进行多步操作。
2、文本处理命令awk
- 查找
-
awk '/数据/{print}' ⽂件名, 在指定的⽂件中查找包含指定数据的行并输出。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# awk '/me/{print}' a12.txt you love me Do you love me?
-
awk '!/数据/{print}' ⽂件名, 在指定的⽂件中查找不包含指定数据的行并输出。
[root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you root@localhost ~]# awk '!/me/{print}' a12.txt I love you Only you [root@localhost ~]#
-
awk '/数据/{print}' ⽂件名, 在指定的⽂件中查找包含指定数据的行并输出。
- 切割
-
awk '{print $n,$m,....} ⽂件名, 在指定的⽂件中按空格或制表符切割后的第n,m个字段。
[root@localhost ~]# cat aaa.txt aaa bbb ccc ddd eee fff aaa bbb ccc ddd eee fff aaa bbb ccc ddd eee fff aaa bbb ccc ddd eee fff aaa bbb ccc ddd eee fff [root@localhost ~]# awk '{print $2,$3}' aaa.txt bbb ccc bbb ccc bbb ccc bbb ccc bbb ccc
-
awk -F'分割符1|分割符2|...' '{print $n,,,,,$NF}' ⽂件名, 在指定的⽂件中按指定的分割符切割后的指定第n个字段, NF表示最后⼀个字段。
[root@localhost ~]# cat aaa.txt aaa bbb ccc ddd eee fff aaa bbb ccc ddd eee fff aaa bbb ccc ddd eee fff aaa bbb ccc ddd eee fff aaa bbb ccc ddd eee fff [root@localhost ~]# sed -i 's/ /,/g' aaa.txt [root@localhost ~]# cat aaa.txt aaa,bbb,ccc,ddd,eee,fff aaa,bbb,ccc,ddd,eee,fff aaa,bbb,ccc,ddd,eee,fff aaa,bbb,ccc,ddd,eee,fff aaa,bbb,ccc,ddd,eee,fff [root@localhost ~]# awk -F ',' '{print $2,$NF}' aaa.txt bbb fff bbb fff bbb fff bbb fff bbb fff [root@localhost ~]#
-
awk '{print $n,$m,....} ⽂件名, 在指定的⽂件中按空格或制表符切割后的第n,m个字段。
- 创建文件链接 ln
- ln -s 原文件 软链接名,文件或目录均可实现,若原文件不存在则软件链接失败。
[root@localhost ~]# ln -s a12.txt a.txt [root@localhost ~]# ll 总用量 20 -rw-r--r--. 1 root root 48 11月 14 14:34 a12.txt -rw-r--r--. 1 root root 120 11月 14 14:40 aaa.txt -rw-------. 1 root root 1463 7月 24 17:44 anaconda-ks.cfg lrwxrwxrwx. 1 root root 7 11月 14 14:56 a.txt -> a12.txt drwxr-xr-x. 2 root root 53 11月 9 15:01 java drwxr-xr-x. 2 root root 6 11月 14 09:13 kgcnews drwxrwxr-x. 7 root root 88 11月 14 09:12 qjt1 drwxr-xr-x. 2 root root 6 11月 4 14:49 qjt2 -rw-r--r--. 1 root root 0 11月 14 09:14 shell.txt drwxr-xr-x. 3 root root 18 11月 6 18:50 test -rw-r--r--. 1 root root 528 11月 11 15:55 test.txt -rw-r--r--. 1 root root 371 11月 9 10:57 ya1.tar.gz [root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# cat a.txt I love you you love me Do you love me? Only you [root@localhost ~]# ll 总用量 20 -rw-r--r--. 1 root root 48 11月 14 14:34 a12.txt -rw-r--r--. 1 root root 120 11月 14 14:40 aaa.txt -rw-------. 1 root root 1463 7月 24 17:44 anaconda-ks.cfg lrwxrwxrwx. 1 root root 7 11月 14 14:56 a.txt -> a12.txt drwxr-xr-x. 2 root root 53 11月 9 15:01 java drwxr-xr-x. 2 root root 6 11月 14 09:13 kgcnews drwxrwxr-x. 7 root root 88 11月 14 09:12 qjt1 drwxr-xr-x. 2 root root 6 11月 4 14:49 qjt2 -rw-r--r--. 1 root root 0 11月 14 09:14 shell.txt drwxr-xr-x. 3 root root 18 11月 6 18:50 test -rw-r--r--. 1 root root 528 11月 11 15:55 test.txt -rw-r--r--. 1 root root 371 11月 9 10:57 ya1.tar.gz [root@localhost ~]#
-
ln 原⽂件名 硬链接名 , 仅普通⽂件可以创建硬链接,若原⽂件不存在,硬链接依然有效。
[root@localhost ~]# ln a12.txt a1.txt [root@localhost ~]# cat a1.txt I love you you love me Do you love me? Only you [root@localhost ~]# cat a12.txt I love you you love me Do you love me? Only you [root@localhost ~]# vim a12.txt [root@localhost ~]# cat a12.txt I love you you love me Do you love me? [root@localhost ~]# cat a1.txt I love you you love me Do you love me? [root@localhost ~]# ll 总用量 24 -rw-r--r--. 2 root root 39 11月 14 14:59 a12.txt -rw-r--r--. 2 root root 39 11月 14 14:59 a1.txt -rw-r--r--. 1 root root 120 11月 14 14:40 aaa.txt -rw-------. 1 root root 1463 7月 24 17:44 anaconda-ks.cfg lrwxrwxrwx. 1 root root 7 11月 14 14:56 a.txt -> a12.txt drwxr-xr-x. 2 root root 53 11月 9 15:01 java drwxr-xr-x. 2 root root 6 11月 14 09:13 kgcnews drwxrwxr-x. 7 root root 88 11月 14 09:12 qjt1 drwxr-xr-x. 2 root root 6 11月 4 14:49 qjt2 -rw-r--r--. 1 root root 0 11月 14 09:14 shell.txt drwxr-xr-x. 3 root root 18 11月 6 18:50 test -rw-r--r--. 1 root root 528 11月 11 15:55 test.txt -rw-r--r--. 1 root root 371 11月 9 10:57 ya1.tar.gz [root@localhost ~]#
- ln -s 原文件 软链接名,文件或目录均可实现,若原文件不存在则软件链接失败。