Linux 基础命令知识2

来源:互联网 发布:mac照片导出很慢 编辑:程序博客网 时间:2024/05/04 16:20

用cut 安列切分文件

#平时按列切分文件用的最多的就是awk ,cut 命令相对awk可能更加轻量级和命令简洁#语法 cut -f FIELD_LIST filename # FIELD_LIST是需要的列,由列号组成,彼此之间用逗号分隔。demo: cut -f 2,3 filename 打印第2列和第3列cat test.txt 123xueping.youtest234xiaomingtestcut -f 2,3 test.txt xueping.youtestxiaomingtestcut -f 2 test.txt | xargs xueping.you xiaomingcut -f 1 --complement test.txt  #--complement用来取补集xueping.youtestxiaomingtestcut -f2 -d"," test.txt # -d 用于指定分隔符cut -c1-5 range_filed.txt #用于切分字符 cut range_field.txt -c1-3,6-9 --output-delimiter "," #按字符切分成两组使用分隔符"," 区分

sed(stream editor) 文本处理使用

# sed 可以替换给定文本中的字符串 , 它可以利用正则表达式进行匹配sed 's/pattern/replace_string/' file 或者 cat file | sed 's/pattern/replace_string/'   # 匹配给定文本中的第一个匹配符使用replace_string进行替换sed -i 's/pattern/replace_string/' #选项-i可以将结果应用于原文件 sed -i 's/pattern/replace_string/g' #命令尾部加上g 能替换匹配到的所有内容sed 's/pattern/replace_string/2g'  #使用2g表示替换从第三个匹配的地方开始替换,忽略前两处的替换#sed 定界符可以使用任意, / | : 都是可以的例如: sed 's:text:replace:g'######sed 通用命名 ########移除空白行 sed '/^$/d' file  ;/pattern/d会删除匹配样式的行,空白行的匹配是开始符紧随着结束符#已匹配的字符串标记&  echo this is an example | sed 's/\w+/[&]/g' ; result: [this] [is] [example]# echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/' # result:this is 7 in a number; \(pattern\) 用于匹配字符串,对于匹配的第一个子串,其对应的标记是\1 ,匹配的第二个子串是\2demo:echo this is digit 7 digit 8 in a number | sed 's/digit \([0-9]\) digit \([0-9]\)/\1\2/';result: this is 78 in a number

awk入门使用

awk脚本的结构基本如下所示:awk 'BEGIN{print "start"}pattern {commonds} END{print "end"}' file#awk 命令工作方式#(1)执行BEGIN{commond} 语句块中的语句#(2)从文件或stdin中读取一行,然后执行pattern {commonds}。重复这个过程直到文件被读取完毕#(3)当读至输入流末尾时,执行END{print comonds}语句块Simple Demo:echo -e "line1\nline2" | awk 'BEGIN{print "start"} {print }END{print "end"}'startline1line2endecho | awk '{var1="v1";var2="v2";var3="v3";print var1,var2,var3;print var1"-"var2"-"var3}'v1 v2 v3v1-v2-v3#特殊变量NR:表示记录数量,在执行过程中对应于当前行号NF: 表示字段数量,在执行过程中对应于当前行的字段数echo -e "1,2,3,45,6,5" | awk -F ',' '{ for(i=0;i++<NF;) print $i;}' #按照 ","分割,使用for 遍历分割的列并做输出1234565#将外部变量传递给awk方法1: var="Hello World";echo | awk -v vv=$var'{print vv}'# 个人推荐使用这种方法v1=$var1 v2=$var2 作为awk参数 紧跟在BEGIN 、 {} 、END后面方法2:var1="Hello ";var2="World";echo | awk '{print v1,v2}' v1=$var1 v2=$var2 #我们可以为需要处理的行进行过滤awk 'NR < 5' #行号小于5的行awk 'NR==1,NR==4' #行号在1到5之间的行awk '/linux/' #包含样式linux的行,(可以用正则表达式来指定样式)awk '!/linux/' #不包含样式的linux行cat test.txt | awk 'NR < 2 { print $0}'123xueping.youtest#awk内建字符串控制函数length(string):字符串长度index(string, search_string):字符串在search_string 中出现的位置split(string, array, delimiter) : 通过定界符生成一个字符串列表,并将该列表存入数组substr(string , start_position, end_position)sub(regex, replacement_str, string) : 将regex正则匹配的第一次内容替换为replacement_strgsub(regex, replacement_str, string) : 将regex正则匹配的所有内容替换为replacement_strmatch(regex,string): 检查正则表达式是否能够匹配字符串,如果能够匹配返回非0值,否则返回0

0 0
原创粉丝点击