1.cut
cut -d "指定分隔符" -f 指定列数 文件名
默认分隔符为Tab键
cut -f 2 student.txt
cat /etc/passwd | grep /bin/bash | cut -d ":" -f 1
2.printf
printf ‘输出类型输出格式’ 输出内容
输出类型:
%ns: 输出字符串。n是数字指代输出几个字符
%ni: 输出整数。n是数字指代输出几个数字
%m.nf: 输出浮点数。m和n是数字,指代输出的整数 位数和小数位数。如%8.2f代表共输出8位数, 其中2位是小数,6位是整数。
输出格式:
\a: 输出警告声音
\b: 输出退格键,也就是Backspace键
\f: 清除屏幕
\n: 换行
\r: 回车,也就是Enter键
\t: 水平输出退格键,也就是Tab键
\v: 垂直输出退格键,也就是Tab键
printf "%s" 1 2 3 4 5 6
printf "%s %s %s\n" 1 2 3 4 5 6
通过指定格式输出
3.awk
当以空格为分隔符时 cut就无法准确识别,这时候就需要使用awk
awk ‘条件1{动作1} 条件2{动作2}…’ 文件名
$数字代表第几列 如 $2 第二列
df -h | grep centos-root | awk '{printf $5 "\n"}'
printf不会自动换行,可使用print自动换行
BEGIN:强制后面的命令第一个执行
END:强制后面的命令最后执行
awk 'BEGIN{print "这是一个测试"} {print $1 $3} END{print "测试结束"}' student.txt
FS:分隔符
cat /etc/passwd | grep /bin/bash | awk 'BEGIN{FS = ":"} {print $1}'
4.sed
sed [选项] ‘[动作]’ 文件名
选项:
-n: 一般sed命令会把所有数据都输出到屏幕 , 如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。
-e: 允许对输入数据应用多条sed命令编辑
-i: 用sed的修改结果直接修改读取数据的文件, 而不是由屏幕输出
动作:
a : 追加,在当前行后添加一行或多行。添加多行时,除最后 一行外,每行末尾需要用“\”代表数据未完结。
c : 行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结。
i : 插入,在当期行前插入一行或多行。插入多行时,除最后 一行外,每行末尾需要用“\”代表数据未完结。
d: 删除,删除指定的行。
p:打印,输出指定的行。
s:字串替换,用一个字符串替换另外一个字符串。格式为“行范 围s/旧字串/新字串/g”(和vim中的替换格式类似)。
打印:sed "2p" student.txt
发现第二行显示了俩次,加入-n,只输出第二行
sed -n "2p" student.txt
删除:sed "2,4d" student.txt
追加:sed "2a error!" student.txt
插入:sed "2i error! " student.txt
替换:sed "s/Tjn/Cyf/g" student.txt
行替换:sed "2c error! " student.txt
应用多条sed语句编辑:sed -e 's/Tjn//g ; s/Tjt//g' student.txt
直接修改文本内容,而不是打印在屏幕上: