Bash-字符截取命令
cut提取命令
cut [选项] 文件名
选项
- -f 列号:提取第几列
- -d 分隔符:按照指定分隔符分割列
例子:假设有xxx.txt文件,内容如下
cut -f 2,4 xxx.txt #提取第二列
cut -d ":" -f 1 #指定:分隔符,提取第一列
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
在awk命令的输出中,支持print和printf命令
- print:print会在每个输出之后自动加入一个换行符(Linux默认没有print命令)
- printf:printf是标准格式输出命令,并不会自动加入换行符,如果需要换行,需要手动加入换行符
awk命令
awk '条件1{动作1} 条件2{动作2}...' 文件名
条件(一般值使用关系表达式作为条件)
- x>10 判断变量x是否大于10
- x>=10 大于等于
- x<=10 小于等于
动作(Action)
- 格式化输出
- 流程控制语句
例子:对student.txt进行截取,对磁盘数据进行截取
例子:BEGIN条件,在截取数据处理之前执行BEGIN后面的动作
例子:FS内置变量,awk默认可以识别的是\t与\n,若是其他分隔符,可以用FS解决
例子:END条件,awk默认可以识别的是\t与\n,若是其他分隔符,可以用FS解决
例子:条件关系运算符
sed命令
一种几乎包含在所有UNIX平台的轻量级编辑器。sed主要用来将数据进行选取、替换、输出、新增
与vim类似,但vim只能修改文件的内容;sed可以直接修改内容的结果输出
sed [选项] '[动作]' 文件名
选项:
- -n: 一般sed命令会把所有数据输出到屏幕,如果加入-n,则只会把经过sed命令处理的行输出到屏幕
- -e: 允许对输入数据应用多条sed命令编辑
- -i: 用sed的修改结果,直接修改读取数据的文件,而不是由屏幕输出
动作:
- a\:追加,当前行后添加一行或多行。添加多行式,除最后一行外,每行末尾需要用"\"代替数据未完结
- c\:替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用"\"代表数据未完结
- i\:插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用"\"代表数据未完结
- d:输出,删除指定行
- p:打印,输出指定行
- s:字符串替换,用一个字符串替换另外一个字符串。格式为"行范围s/旧字符串/新字符串/g"
例子:输出student.txt的第二行(PS:输出不会影响student.txt文件本身内容,只要不加【-i】选项)
例子:删除student.txt的第2,3行(只影响输出,不影响文件本身,因为没有加【-i】选项)
例子:第2行末尾,第2行前面追加
例子:替换行(c),替换字符串(行范围s/旧字符串/新字符串/g)
例子:同时执行多个字符串替换,用-e