linux的常用文件操作cut ,awk,sed

cut命令;

cut [选项]  文件名        默认分割符是制表符

选项:    -f 列号:    提取第几列

    -d 分隔符:    按照指定分隔符分割列

eg:#cut -f  2  aa.txt   提取第二列  默认是使用制表符切割 (可以使用,隔开,指定提取多个列)

eg:#cut -d ":" -f 1,3 /etc/passwd  以:分割,提取第1和第3列 (指定切割符是:)

cut  -d " " -f 1 ,3

-f

指定分割符是空格,提取第2,4,列

awk  一个强大的文本分析工具

把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

语法:awk ‘条件1{动作1}条件2{动作2}...’文件名

| 是管道命令,将第一个的输出,作为第二个的输入。

 

AWK读取输入文件一次一行,默认情况下的awk打印文件的每一行。

[root@hadoop001 shell-study]# cat employee.txt 
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Sanjay  Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500
500  Randy   DBA        Technology  $6,000
[root@hadoop001 shell-study]# 
[root@hadoop001 shell-study]# 
[root@hadoop001 shell-study]# awk '{print;}' employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Sanjay  Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500
500  Randy   DBA        Technology  $6,000
[root@hadoop001 shell-study]# 
[root@hadoop001 shell-study]# 
[root@hadoop001 shell-study]# awk '/Thomas/' employee.txt
100  Thomas  Manager    Sales       $5,000

有上图可见cut与awk的区别,以及cut的局限性,如果多个空格连在一起,就会切割出空格作其中的一列。

而,

awk有内置的变量。对于每一个记录,即行,分隔空白字符分隔记录默认情况下,它存储在$ n个变量。如果该行有4个词,它会被存储在$ 1,$2,$ 3和$ 4。 $0表示整行。 NF是一个内置变量,它代表这一行有多少个被分隔的域.

使用awk,

awk [-F field-separator] 'commands' input-file(s) 其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。 在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。

awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$2} END {print "blue,/bin/nosh"}' 123.txt

-F 用于指定分割符为“:”  ,{print $1","$2} ,输出第一个域和第二个域,双引号之前的“,”,用于指定输出时,$1 和 $2 之间的分隔符。

awk  -F ':'  '{print $1"\t"$7}' 这里的分隔符是制表符"\t"

 

sed命令

主要进行文本替换

sed ‘s/it/edu360/g’ sed.txt  把sed.txt文件中的it替换为edu360,并输出

    #更改短信发送报文  #1->id #2->年 #3->月  #4->日 #5->票数 #6->金额 #7->手机号  #8->时间 2018-08-08 13:23:33 形式
		        sed -e "s/#1/$unixSecond/g" -e "s/#2/$TSK_YEAR/g" -e "s/#3/$TSK_MONTH/g" -e "s/#4/$TSK_DAY/g" -e "s/#5/$total/g" -e "s/#6/$money/g" -e "s/#7/$mobile/g" -e "s/#8/$timenow_t/g" msg_content_template.txt > msg_content_template_cur.txt

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值