转载请注明作者(独孤尚良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——著