Linux 基础命令知识2

用cut 安列切分文件

#平时按列切分文件用的最多的就是awk ,cut 命令相对awk可能更加轻量级和命令简洁
#语法 cut -f FIELD_LIST filename # FIELD_LIST是需要的列,由列号组成,彼此之间用逗号分隔。
demo: cut -f 2,3 filename 打印第2列和第3列
cat test.txt 
123	xueping.you	test
234	xiaoming	test

cut -f 2,3 test.txt 
xueping.you	test
xiaoming	test

cut -f 2 test.txt | xargs 
xueping.you xiaoming

cut -f 1 --complement test.txt  #--complement用来取补集
xueping.you	test
xiaoming	test

cut -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 ,匹配的第二个子串是\2
demo:
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"}'
start
line1
line2
end

echo | awk '{var1="v1";var2="v2";var3="v3";print var1,var2,var3;print var1"-"var2"-"var3}'
v1 v2 v3
v1-v2-v3

#特殊变量
NR:表示记录数量,在执行过程中对应于当前行号
NF: 表示字段数量,在执行过程中对应于当前行的字段数

echo -e "1,2,3,45,6,5" | awk -F ',' '{ for(i=0;i++<NF;) print $i;}' #按照 ","分割,使用for 遍历分割的列并做输出
1
2
3
45
6
5

#将外部变量传递给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}'
123	xueping.you	test

#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_str
gsub(regex, replacement_str, string) : 将regex正则匹配的所有内容替换为replacement_str
match(regex,string): 检查正则表达式是否能够匹配字符串,如果能够匹配返回非0值,否则返回0



阅读更多
个人分类: Linux Shell
上一篇Linux 基础命令知识1
下一篇Linux 基础命令知识3
想对作者说点什么? 我来说一句

linux基础命令

2017年10月08日 47KB 下载

Linux的一些基础命令

2010年03月22日 13KB 下载

Linux基础命令教程豪华版.

2010年01月11日 1.21MB 下载

Linux基础命令教程豪华版

2010年01月13日 1.21MB 下载

linux基础总结

2017年05月17日 593KB 下载

Linux基础命令课程.rar

2009年03月05日 1.15MB 下载

Linux基础命令教程 豪华版

2013年11月04日 833KB 下载

没有更多推荐了,返回首页

关闭
关闭