Bash 使用AWK或SED如何删除第一列';s字符计数不为';t等于13
使用AWK或sed如何删除时间戳(第一列)不等于13个数字字符的任何行,而忽略第一行 之前:Bash 使用AWK或SED如何删除第一列';s字符计数不为';t等于13,bash,awk,sed,Bash,Awk,Sed,使用AWK或sed如何删除时间戳(第一列)不等于13个数字字符的任何行,而忽略第一行 之前: timestamp,pageNo,description 1451317591621,01,Home Page Request 14513,Home Page Request 1451317591623,03,Home Page Request 1451317,04,Home Page Request 1451317591625,05,Home Page Request 之后: timestamp,p
timestamp,pageNo,description
1451317591621,01,Home Page Request
14513,Home Page Request
1451317591623,03,Home Page Request
1451317,04,Home Page Request
1451317591625,05,Home Page Request
之后:
timestamp,pageNo,description
1451317591621,01,Home Page Request
1451317591623,03,Home Page Request
1451317591625,05,Home Page Request
使用
sed
,如果行号为1或第一个字段正好由13位数字组成,则通过;否则,删除
sed -r -e '1b' -e '/^[0-9]{13},/b' -e d file
同样,使用Awk,如果行号为1或第一个字段为13个字符且所有数字,则打印
awk -F , 'NR == 1 || (len($1) == 13 && $1 ~ /^[0-9]*$/)' file
使用awk
(需要gawk 4+或3+以及--re interval选项)
使用sed
sed '/^[0-9]\{13\},/p;1p;d' file
如果Perl是一个选项:
如果$F[0]=~/^[0-9]{13}$/或$.==1'文件
使用以下命令行选项:
围绕输入文件的每一行循环-n
自动拆分模式–将输入行拆分为-a
数组。默认为按空格拆分李>@F
执行perl代码-e
自动拆分修改器,在本例中,在-F
上拆分,
$。
是行号@F
是每行中的单词数组,索引从$F[0]
输出:
timestamp,pageNo,description
1451317591621,01,Home Page Request
1451317591623,03,Home Page Request
1451317591625,05,Home Page Request
sed
命令未执行OP要求的操作。看起来awk
命令也不是。@mad物理学家,它是给我的…,它做错了什么?它检查的是整行,而不是第一列。
awk -F, 'NR==1 || (length($1) == 13 && $1+0 == $1)' file
timestamp,pageNo,description
1451317591621,01,Home Page Request
1451317591623,03,Home Page Request
1451317591625,05,Home Page Request