1.cut命令
cut[选项] 文件名
选项: -f 列号:提取第几列 -d:分隔符:按照指定分隔符分割列
注意:上述的a.txt之间空格要用\t制表符
例1: cut -d ":" -f 1,3 a.txt #将a.txt文本中以:分隔符分隔后的文本的第一列和第三列提取出来
例2: 通过管道符输入文件内容:
例3:若空格为分隔符,则必须要用\t(tab键)
2.printf命令:
printf ‘输出类型输出格式' 输出内容
输出类型:
%ns 输出字符串,n是数字指代输出几个字符
%ni: 输出整数 。n是数字指代输出几个数字
%m.nf
输出格式:
\a:输出警告声音
\b:输出 退格键
\f:清除屏幕
\n:换行
\r:回车
\t:水平退格
\v:垂直退格
例:
注意:printf 是循环输出的,直到把所有的字符串都输出
3.awk命令:
awk '条件1{动作1}条件2{动作2}......’ 文件名条件:
一般使用关系表达式作为条件
x>10 判断变量是否大于10
动作:
格式化输出
流程控制语句
注意:a.txt先把第一行给了printf,然后把每一列分别给了$1,$2......;$0为一行,\t需要加引号,否则要出错
注意:awk实现了cut缺点,可以用空格分开
注意:该例结合了awk 和cut 命令
FS:内置对象
内置对象表
1、常用操作
[chengmo@localhost ~]$ awk '/^root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash/^root/ 为选择表达式,$0代表是逐行
2、设置字段分隔符号(FS使用方法)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":"}/^root/{print $1,$NF}' /etc/passwd
root /bin/bash
FS为字段分隔符,可以自己设置,默认是空格,因为passwd里面是”:”分隔,所以需要修改默认分隔符。NF是字段总数,$0代表当前行记录,$1-$n是当前行,各个字段对应值。
3、记录条数(NR,FNR使用方法)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":"}{print NR,$1,$NF}' /etc/passwd
1 root /bin/bash
2 bin /sbin/nologin
3 daemon /sbin/nologin
4 adm /sbin/nologin
5 lp /sbin/nologin
6 sync /bin/sync
7 shutdown /sbin/shutdown
……NR得到当前记录所在行
4、设置输出字段分隔符(OFS使用方法)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";OFS="^^"}/^root/{print FNR,$1,$NF}' /etc/passwd
1^^root^^/bin/bash
OFS设置默认字段分隔符
4.sed命令5、设置输出行记录分隔符(ORS使用方法)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";ORS="^^"}{print FNR,$1,$NF}' /etc/passwd
1 root /bin/bash^^2 bin /sbin/nologin^^3 daemon /sbin/nologin^^4 adm /sbin/nologin^^5 lp /sbin/nologin
从上面看,ORS默认是换行符,这里修改为:”^^”,所有行之间用”^^”分隔了。
它是一种几乎所有unix平台的轻量 级流编辑器。主要作用是将数据进行选取,替换,删除,新 增的命令
sed [选项] '[动作]' 文件名
选项:
-n:一般sed命令会把所有数据 都输出 到屏幕 ,如果 加入此选择,则只会把经过sed命令处理的行输出 到屏幕
-e:允许对输入数据应用 多条sed命令编辑
-i:用sed的修改结果直接修改读取数据 的文件,而不是由屏幕输出 。
行输出:
删除指定的行:
此时不会真正删除a.txt中的第二行,第三和地,因为没有加-i.
行修改:
sed '2a hello' a.txt 在第二行后追加hell0
sed '2i hello' a.txt 在第二行之前加入hello
sed '2c No such person ‘ a.txt 数据替换
sed 's/旧字串/新字串/g’ 文件名
sed '3s/74/99/g' a.txt 在第三行中,把74换成99
sed -i '3s/74/99/g' a.txt 操作的数据直接写入文件