linux awk 命令行 刚开始学习的一些基础知识

转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/80814847

 

awk的格式为:awk -F ‘BEGIN{};{};END{}’,命令行在单引号内,begin{}是开始前的准备工作,end{}是结束后的收尾工作。中间的花括号是每行执行的代码。

注意:此代码是在linux命令行里输入,故这段代码都在一行,不可回车换行。以下代码有换行是为了便于阅读。

awk -F"," 'BEGIN{OFS=","}; 
  {  if(length($1)==19)
{$1=substr($1,1,6)"0"substr($1,7,2)"0"substr($1,9,11);}   
 else if(length($1)!=21 && length($1)!=0){$1="00_"$1; };  }; 
 { if(length($9)==19){$9=substr($9,1,6)"0"substr($9,7,2)"0"substr($9,9,11);print $0}   
 else { print $0} } END{print '\n'}' z1.txt >z2.txt

awk 表明是awk命令
-F“,” 表明文本文件的分隔符是,

begin{ofs=“,”} 表明输出文件的分隔符是,

{}里的是代码块,

其中if(){}是判断执行语句,判断的是如果字符串是19位,即形如“2018/6/9”,则补上两个0,得到形如“2018/06/09”的结果;

$0是整个行所有列,即一整行全部内容,$1(2,3…)是第1(2,3…)列,即每行第一个字符串;

substr($1,1,6)指的是第1列的字符串的第1位开始的6个字符;

print是输出字符串;

END{print '\n'}是最后输出回车;

z1.txt>z2.txt指的是逐行读取z1.txt文件的数据,经过代码块的处理后,逐行输出到z2.txt文件里。

 

注:if语句不可用分号分隔

 

独孤尚良dugushangliang——著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值