Linux 基础命令知识2

原创 2015年07月06日 18:22:58

用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 基础命令知识1

去掉字符串前后空格 echo " a bc " | awk 'gsub(/^ *| *$/,"")' 计算变量的length长度: var="abc";echo ${#va...
  • yxp20092010
  • yxp20092010
  • 2015年07月05日 16:08
  • 411

Linux 基础命令知识3

Shell基础知识快照和备份 提取快照和备份数据都是日常工作,这节了解一下Shell基本的归档命令知识 Shell基础知识快照和备份 tar归档 tar向归档文件中添加文件tar...
  • yxp20092010
  • yxp20092010
  • 2015年07月08日 18:09
  • 297

Linux 基础命令知识4

无网不利,Shell网络知识 shell 网络 linux 打印网络接口列表 ifconfig | cut -c-10 | tr -d ' ' | tr -s '\n'eth0lo#cut -...
  • yxp20092010
  • yxp20092010
  • 2015年07月08日 19:02
  • 290

Linux基础命令知识大全

linux目录架构 / 根目录 /bin 常用的命令 binary file 的目錄 /boot 存放系统启动时必须读取的档案,包括核心 (kernel) 在内 /boot/grub/menu.lst...
  • qq_33850438
  • qq_33850438
  • 2016年07月08日 22:50
  • 377

Linux常见基础命令总结(一)

Linux的文件权限: 1. 文件权限:文件所有者权限,用户组权限,其他非本用户组的权限。以三个字符为一组标识。 r(读):对应的数值为4 w(写):对应的数值位2 x(执行):对应的数值为1...
  • wqc_CSDN
  • wqc_CSDN
  • 2016年06月16日 22:43
  • 392

linux基础命令2

history                                        //历史记录,ctrl+r 选择数字可以搜索已经执行过的命令 find -iname *.sh      ...
  • wszb2012
  • wszb2012
  • 2015年04月22日 18:31
  • 200

linux基础命令和知识(三)

1,linux账户分为root用户,虚拟用户和普通用户 2,cat /etc/login.defs | grep UID_MAX可以查看最大UID的值 3,添加用户  useradd eg.  s...
  • qizhukanhai2
  • qizhukanhai2
  • 2013年12月13日 00:25
  • 373

linux基础命令(2)

  • u011230536
  • u011230536
  • 2013年07月26日 23:05
  • 458

Linux必会基础命令(2)

新增:查看cpu位数:getconf LONG_BIT查看cpu信息:more(cat) /proc/cpuinfo查看cpu动态使用率:top查看内存:more(cat) /proc/meminfo...
  • isay1255
  • isay1255
  • 2010年12月18日 10:45
  • 395

Linux基础命令学习笔记~2

数据流重导向数据流重导向就是在运行一个命令时这个命令可能会从文件读入,经过处理再将数据输出到屏幕或文件。 输入输出有三种:标准输入  (stdin) :代码为 0 ,使用 < 或 或 >> ; 标...
  • qq_35144795
  • qq_35144795
  • 2017年09月13日 09:11
  • 71
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux 基础命令知识2
举报原因:
原因补充:

(最多只允许输入30个字)