一、文本处理三剑客命令初探
sed
流式编辑器,主要擅长对文件的编辑操作,我们可以事先定制好编辑文件的指令,然后让sed自动完成对文件的整体编辑
实例:
语法: sed [-hnV][-e<script>][-f<script文件>][文本文件] 参数说明: -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。 -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h 或 --help 显示帮助
-n 或 -quite 或 -silent 仅显示script处理后的结果
-V 或 -version 显示版本信息
-i 直接修改读取的文件内容,而不是输出到终端
动作说明:
a 新增 a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c 取代 c的后面可以接字串,这些字串可以取代n1,n2之间的行
d 删除
i 插入 i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p 打印 亦即将某个选择的数据印出。通常p会参与函数sed -n 一起运行
s 取代 可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法!例如:1,20s/old/new/g
以行为单位的新增/删除
示例:
在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令:
[root@localhost test02]# sed -e 4a
ewLine testfile
首先查看testfile中的内容
[root@localhost test02]# cat testfile
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
使用sed命令后,输出结果如下:
[root@localhost test02]# sed -e 4a
ewLine testfile
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
newLine
[root@localhost test02]# nl etc/passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
...... (后面省略) ......
sed的动作为'2,5d',那个 d 就是删除!因为2-5行删除了,所以显示的数据就没有2-5行
sed后面接的动作,务必以""两个单引号括住
只要删除第 2 行
[root@localhost test02]# nl /etc/passwd | sed '2d
删除第 3 行到最后一行
[root@localhost test02]# nl /etc/passwd | sed '3,$d'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
在第二行后(亦即是加在第三行)加上[drink tea?]字样
[root@localhost test02]# nl /etc/passwd | sed '2a drink tea'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
drink tea
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
...... (后面省略) ......
如果是要在第二行前
[root@localhost test02]# nl /etc/passwd | sed '2i drink tea'
1 root:x:0:0:root:/root:/bin/bash
drink tea
2 bin:x:1:1:bin:/bin:/sbin/nologin
如果是要增加两行以上,在第二行后面加入两行字,例如Drink tea or ... 与 drink beer
[root@localhost test02]# nl /etc/passwd | sed '2a Drink tea or ...
drink beer ?'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
Drink tea or ...
drink beer ?
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
...... (后面省略) ......
每一行之间都必须要以反斜杠[]来进行新行的添加,所以,上面的例子中,我们可以发现在第一行的最后面就有 存在
以行为单位的替换与显示
将2-5行的内容取代为[No 2-5 number]
[root@localhost test02]# nl /etc/passwd | sed '2,5c No 2-5 number'
1 root:x:0:0:root:/root:/bin/bash
No 2-5 number
6 sync:x:5:0:sync:/sbin:/bin/sync
透过这个方法我们就能够将数据整行取代了
仅列出/etc/passwd文件内的第5-7行
[root@localhost test02]# nl /etc/passwd | sed -n '5,7p'
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
可以透过这个sed的以行为单位的显示功能,就能够将某一个文件内的某些行号选择出来显示
数据的搜寻并显示
搜索/etc/passwd有root关键字的行
[root@localhost test02]# nl /etc/passwd | sed '/root/p'
如果root找到,除了输出所有行,还会输出匹配行
使用-n的时候将只打印包含模板的行
[root@localhost test02]# nl /etc/passwd | sed -n '/root/p'
1 root:x:0:0:root:/root:/bin/bash
10 operator:x:11:0:operator:/root:/sbin/nologin
数据的搜寻并删除
[root@localhost test02]# nl /etc/passwd | sed '/root/d' 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
...... 后面省略 ......
第一行匹配的root已经删除了
数据的搜寻并执行命令
搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,
这里把bash替换为blueshell,再输出这行:
[root@localhost test02]# nl /etc/passwd | sed '/root/{s/bash/biueshell/;p;q}'
1 root:x:0:0:root:/root:/bin/biueshell
1 root:x:0:0:root:/root:/bin/biueshell
***最后的 q 是退出
数据的搜寻并替换
sed 's/要被取代的字串/新的字串/g'
示例:
[root@localhost test02]# cat file3 | sed 's/hello/HELLO/g'
HELLO
HELLO
123
123
fun
多点编辑
一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换成blueshell [root@localhost test02]# nl /etc/passwd | sed -e '3,$d' -e 's/bash/biueshell/g' 1 root:x:0:0:root:/root:/bin/biueshell 2 bin:x:1:1:bin:/bin:/sbin/nologin -e 表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为biueshell
直接修改文件内容(危险动作)
sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!
举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!
因为文件太大了!那怎办?就利用 sed 啊!
透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!
追加行的说明
4 行之后追加 1 行空行:
# 可以添加一个完全为空的空行 sed '4 a \' # 可以添加两个完全为空的空行 sed '4 a \n'
awk
awk主要用于处理有格式的文本,例如/etc/passwd这种
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
语法 awk [选项参数] 'script' var=value file(s) 或 awk [选项参数] -f scriptfile var=value file(s) 选项参数说明: -F fs or --field-separator fs 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。 -v var=value or --asign var=value 赋值一个用户定义变量。 -f scripfile or --file scriptfile 从脚本文件中读取awk命令。 -mf nnn and -mr nnn 对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能
在标准awk中不适用。 -W compact or --compat, -W traditional or --traditional 在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。 -W copyleft or --copyleft, -W copyright or --copyright 打印简短的版权信息。 -W help or --help, -W usage or --usage 打印全部awk选项和每个选项的简短说明。 -W lint or --lint 打印不能向传统unix平台移植的结构的警告。 -W lint-old or --lint-old 打印关于不能向传统unix平台移植的结构的警告。 -W posix 打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;
操作符**和**=不能代替^和^=;fflush无效。 -W re-interval or --re-inerval 允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。 -W source program-text or --source program-text 使用program-text作为源代码,可与-f命令混用。 -W version or --version 打印bug报告信息的版本。
基本用法
log.txt文本内容如下 2 this is a test 3 Are you like awk This's a test 10 There are orange,apple,mongo
用法一:
awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号
实例:
1、每行按空格或TAB分割,输出文本中的1,4项 [root@localhost test02]# awk '{print $1,$4}' log.txt 2 a 3 like This's 10 orange,apple,mongo
2、格式化输出
[root@localhost test02]# awk '{printf "%-8s %-10s ",$1,$4}' log.txt
2 a
3 like
This's
10 orange,apple,mongo
用法二:
awk -F #-F相当于内置变量FS,指定分隔字符
实例:
使用 " , " 分割
[root@localhost test02]# awk -F, '{print $1,$2}' log.txt
2 this is a test
3 Are you like awk
This's a test
10 There are orange apple
或者使用内建变量
[root@localhost test02]# awk 'BEGIN{FS=","}{print $1,$4}' log.txt
2 this is a test
3 Are you like awk
This's a test
10 There are orange
使用多个分隔符:先使用空格分割,然后对分割结果再使用 ',' 分割
[root@localhost test02]# awk -F '[ ,]' '{print $1,$2,$5}' log.txt
2 this test
3 Are awk
This's a
10 There apple
用法三:
awk -v #设置变量
实例:
[root@localhost test02]# awk -va=1 '{print $1,$1+a}' log.txt 2 3 3 4 This's 1 10 11 [root@localhost test02]# awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt 2 3 2s 3 4 3s This's 1 This'ss 10 11 10s
用法四:
awk -f {awk脚本} {文件名}
实例:
$ awk -f cal.awk log.txt
grep
grep擅长过滤内容
Linux grep命令用于查找文件里符合条件的字符串。
grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 - ,则grep指令会从标准输入设备读取数据
语法: grep 选项 '正则' 文件路径
选项:
-n 在过滤出的每一行前面加上它在文件中的相对行号
-i 忽略大小写
-color 颜色
-l 如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root'/etc
-R,-r,-recursive 递归
详情参见: Linux grep 命令 | 菜鸟教程 (runoob.com)
示例:
[root@localhost test02]# grep '^root' /etc/passwd root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# grep -n 'bash$' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
20:zhzhang:x:1000:1000:zhzhang:/home/zhzhang:/bin/bash
21:zh:x:1001:1001::/home/zh:/bin/bash
22:test2:x:1002:1002::/home/test2:/bin/bash
24:egon:x:1003:1003::/home/egon:/bin/bash
grep也支持管道,我们可以发现三剑客命令都支持管道
[root@localhost ~]# ps aux | grep ssh
[root@localhost ~]# ps aux | grep [s]sh
* ps(process status) 命令用于显示当前进程的状态,类似于windows的任务管理器
从文件内容查找匹配指定字符串的行
[root@localhost ~]# grep "被查找的字符串" 文件名
从文件内容查找与正则表达式匹配的行
[root@localhost ~]# grep -e "正则表达式" 文件名
查找时不区分大小写
[root@localhost ~]# grep -i "被查找的字符串" 文件名
查找匹配的行数
[root@localhost ~]# grep -c "被查找的字符串" 文件名
从文件内容查找不匹配指定字符串的行
[root@localhost ~]# grep -v "被查找的字符串" 文件名
awk、sed、grep更适合的方向:
grep 更适合单纯的查找或匹配文本
sed 更适合编辑匹配到的文本
awk 更适合格式化文本,对文本进行较复杂格式处理
二、文件管理之:文件查找
一、查看命令所属文件 which
which 命令用于查找文件
which 指令会在环境变量$PATH设置的目录里查找符合条件的文件
语法:
which [文件...]
参数:
-n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名
-p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径
-w 指定输出是栏位的宽度
-V 显示版本信息
[root@localhost ~]# which bash /usr/bin/bash # bash可执行的程序的绝对路径
* ps:一些命令的路径都被配置到了环境变量PATH里面
二、查找文件 find
Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 语法 find path -option [ -print ] [ -exec -ok command ] {} ; 参数说明 : find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。
如果 path 是空字串则使用目前路径
如果 expression 是空字串则使用 -print 为预设 expression。 expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。 -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 -amin n : 在过去 n 分钟内被读取过 -anewer file : 比文件 file 更晚被读取过的文件 -atime n : 在过去n天内被读取过的文件 -cmin n : 在过去 n 分钟内被修改过 -cnewer file :比文件 file 更新的文件 -ctime n : 在过去n天内被修改过的文件 -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写 -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写 -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。 -type c : 文件类型是 c 的文件。 d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket -pid n : process id 是 n 的文件 你可以使用 ( ) 将运算式分隔,并使用下列运算。 exp1 -and exp2 ! expr -not expr exp1 -or exp2 exp1, exp2
按文件名:
[root@localhost ~]# find /etc -name 'ifcfg-eth0' [root@localhost ~]# find /etc -iname 'ifcfg-eth0' -i 忽略大小写 [root@localhost ~]# find /etc -iname 'ifcfg-eth*'
按文件大小
[root@localhost ~]# find /etc -size +3M #大于3M [root@localhost ~]# find /etc -size 3M [root@localhost ~]# find /etc -size -3M [root@localhost ~]# find /etc -size +3M -ls # ls 找到的处理动作
指定查找的目录深度
1、-maxdepth level 最大搜索深度
比如find -maxdepth 1 就表示只搜索1级,即只搜索该目录下的文件,而不再搜索其下的目录中的文件
2、-mindepth level 最小搜索深度
比如find -mindepth 2 就表示至少要搜索二级(搜索路径默认从当前开始)
[root@localhost ~]# find / -maxdepth 5 -a -name "ifcfg-eth0" # -a并且,-o或者,不加-a,默认就是-a
按时间查找(atime,mtime,ctime)
以"天"为单位
-atime [+/-]# 指的是文件最后被读取的时间,可使用touch命令更改为当前时间
-mtime [+/-]# 指的是文件内容最后被修改的时间,修改动作可是使用echo重定向、vi等
-ctime [+/-]# 指的是文件本身最后被变更的时间,变更动作可是使chmod、chgrp、mv等
# 天数
+ 表示多少天以上
- 表示多少天以内
以"分钟"为单位(用法同上面的以"天"为单位)
-amin
-mmin
-cmin
[root@localhost ~]# find /etc -atime +3
[root@localhost ~]# find /etc -mtime 3
[root@localhost ~]# find /etc -ctime -3
按文件属主、属组查找
[root@localhost ~]# find /home -user egon # 属主是egon的文件 [root@localhost ~]# find /home -group it # 属组是it组的文件 [root@localhost ~]# find /home -user egon -group it [root@localhost ~]# find /home -user egon -a -group it # 同上意思一样 [root@localhost ~]# find /home -user egon -o -group it [root@localhost ~]# find /home -nouser # 用户还存在,在/etc/passwd中删除了记录 [root@localhost ~]# find /home -nogroup # 用户还存在,在/etc/group中删除了记录 [root@localhost ~]# find /home -nouser -o -nogroup
按文件类型
[root@localhost ~]# find /dev -type f # f普通 [root@localhost ~]# find /dev -type d # d目录 [root@localhost ~]# find /dev -type l # l链接 [root@localhost ~]# find /dev -type b # b块设备 [root@localhost ~]# find /dev -type c # c字符设备 [root@localhost ~]# find /dev -type s # s套接字 [root@localhost ~]# find /dev -type p # p管道文件
根据inode号查找 -inum n
[root@localhost ~]# find / -inum 1811
按文件权限
[root@localhost ~]# find . -perm 644 -ls [root@localhost ~]# find . -perm -644 -ls [root@localhost ~]# find . -perm -600 -ls [root@localhost ~]# find /sbin -perm -4000 -ls # 包含set uid [root@localhost ~]# find /sbin -perm -2000 -ls # 包含set gid [root@localhost ~]# find /sbin -perm -1000 -ls # 包含sticky
扩展知识:find 结合 xargs
xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,例如:
find /sbin -perm +700 |ls -l #这个命令是错误的 find /sbin -perm +700 |xargs ls -l #这样才是正确的
xargs 一般是和管道一起使用
命令格式:
somecommand |xargs -item command
参数: -a file 从文件中读入作为sdtin -e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。 -p 当每次执行一个argument的时候询问一次用户。 -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。 -t 表示先打印命令,然后再执行。 -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。 -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。 -s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。 -L num 从标准输入一次读取 num 行送给 command 命令。 -l 同 -L。 -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。 -x exit的意思,主要是配合-s使用。。 -P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。
实例:
[root@localhost ~]# find . -name "egon*.txt" |xargs rm -rf [root@localhost ~]# find /etc -name "ifcfg-eth0" |xargs -I {} cp -rf {} /var/tmp [root@localhost ~]# find /test -name "ifcfg-ens33" |xargs -I {} mv {} /ttt [root@localhost ~]# find /ttt/ -name "ifcfg*" |xargs -I {} chmod 666 {}
三、文件管理之上传与下载
四、文件管理之:输出与重定向
五、文件管理之:字符处理命令
sort命令 用于将文件内容加以排序
语法 sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
参数说明: -b 忽略每行前面开始出的空格字符。 -c 检查文件是否已经按照顺序排序。 -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。 -f 排序时,将小写字母视为大写字母。 -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。 -m 将几个排序好的文件进行合并。 -M 将前面3个字母依照月份的缩写进行排序。 -n 依照数值的大小排序。 -u 意味着是唯一的(unique),输出的结果是去完重了的。 -o<输出文件> 将排序后的结果存入指定的文件。 -r 以相反的顺序来排序。 -t<分隔字符> 指定排序时所用的栏位分隔字符。 +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 --help 显示帮助。 --version 显示版本信息。
准备文件,写入一段无序的内容: [root@localhost ~]# cat >> file.txt <<EOF b:3 c:2 a:4 e:5 d:1 f:11 EOF 例一: [root@localhost test02]# sort file.txt 例二: [root@localhost test02]# sort -t":" -n -k2 file.txt 例三: [root@localhost test02]# sort -t":" -n -r -k2 file.txt
uniq命令 用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用
语法 uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
参数: -c或--count 在每列旁边显示该行重复出现的次数。 -d或--repeated 仅显示重复出现的行列。 -f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。 -s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。 -u或--unique 仅显示出一次的行列。 -w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。 --help 显示帮助。 --version 显示版本信息。 [输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据; [输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。
准备文件,写入一段无序的内容:
[root@localhost ~]# cat > file.txt <<EOF
hello
123
hello
123
func
EOF
例一:
[root@localhost test02]# sort file.txt
例二:
[root@localhost test02]# sort file.txt | uniq
例三:
[root@localhost test02]# sort file.txt | uniq -c
cut命令 用来显示行中的指定部分,删除文件中指定字段
语法 cut [-bn] [file] cut [-c] [file] cut [-df] [file]
使用说明: cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。 如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。 参数: -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 -c :以字符为单位进行分割。 -d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。 -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的 范围之内,该字符将被写出;否则,该字符将被排除
示例:
[root@localhost ~]# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash [root@localhost ~]# head -1 /etc/passwd | cut -d":" -f1,3,6 root:0:/root
tr命令 替换或删除命令
语法 tr [-cdst][--help][--version][第一字符集][第二字符集] tr [OPTION]…SET1[SET2]
参数说明: -c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换 -d, --delete:删除指令字符 -s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符 -t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等 --help:显示程序用法信息 --version:显示程序本身的版本信息
[root@localhost ~]# head -1 /etc/passwd | tr "root" "ROOT" ROOT:x:0:0:ROOT:/ROOT:/bin/bash [root@localhost ~]# [root@localhost ~]# head -1 /etc/passwd | tr -d "root" :x:0:0::/:/bin/bash
wc命令 统计,计算数字
语法 wc [-clw][--help][--version][文件...]
参数: -c或--bytes或--chars 只显示Bytes数。 -l或--lines 显示行数。 -w或--words 只显示字数。 --help 在线帮助。 --version 显示版本信息。
[root@localhost test02]# ll file.txt -rw-r--r--. 1 root root 25 Dec 9 10:26 file.txt [root@localhost test02]# wc -c file.txt 25 file.txt