Linux:shell基础(八)
字符提取命令:
cut 字段提取命令
printf 命令
awk字段提取命令
sed 字段提取命令
1、cut命令
cut [选项] 文件名
选项:
-f 列号: 提取第几列
-d 分隔符: 按照指定分隔符分割。(默认分隔符为制表符(Tab键))
eg: cut -d ":" -f 2 test.txt 代表,分隔符设置为":",取出第2列。
(cut 命令不能处理分隔符是空格的情况,所以就需要接下来的awk命令)
2、printf 命令
printf '输出类型输出格式' 输出内容
输出类型:
%ns: 输出字符串,n是数字,代表输出几个字符
%ni: 输出整数,n是数字,代表输出几个字符
%m.nf:输出浮点数。m和n是数字,代表输出的整数位数和小数位数。
eg:%8.2f 代表:输出8位数。其中2位是小数,6位是整数。
输出格式:
\a:输出警告声音
\b:输出退格键,也就是Backspace键
\f:清楚屏幕
\n:换行
\r:回车,也就是Enter键
\t:水平输出退格键,也就是Tab键
\v:垂直输出退格键,也就是Tab键
在awk命令的输出中支持print和printf命令
print:print会在每个输出之后,自动加入一个换行符。(Linux默认没有print命令)
printf:printf是标准格式输出命令,并不会自动加入换行符,如果需要换行,需要手动加入换行符。
3、awk 命令
awk ‘条件1{动作1} 条件2{动作2} ....’ 文件名
条件:
一般使用关系表达式作为条件: >, >=, < ,<=
动作:
格式化输出
流程控制语句
4、sed命令
sed [选项] '[动作]' 文件名
选项:
-n :把经过sed处理的行输出到屏幕。(一般sed命令会把所有数据输出到屏幕)
-e:允许对输入数据应用多条sed命令编辑
-i:用sed的修改结果直接修改读取数据的文件,而不是又屏幕输出。
动作:
a \ :追加。在当前行后添加一行或多行。
添加多行时,除最后一行外,每行结尾需要用“\”代表数据结束。
c \ :行替换。用c后面的字符串替换原数据行。
替换多行时,除最后一行外,每行结尾需要用“\”代表数据结束。
i \ :插入。在当前行前插入一行或多行。
插入多行时,除最后一行外,每行结尾需要用“\”代表数据结束。
d \ :删除。删除指定行。
p \ :打印。打印指定行。
s \ :字符串替换,用一个字符串替换另外一个字符串。
格式为:“行范围s/旧字符串/新字符串/g” (和vim中的替换很像)
sed '2p' ./test.txt 输出第二行。会导致所有内容都输出,其中第二行输出两遍。
sed -n '2p' ./test.txt 输出第二行。只输出第二行。
sed '2,4d' ./test.txt 删除第二行到第四行,但是并不修改文件。
sed '2a hello' ./test.txt 向第二行后面追加hello,并不修改文件。