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

 

posted @ 2023-10-04 12:14  SiNanhong  阅读(298)  评论(0编辑  收藏  举报