Bash,根据第 3 列从 csv 中 grep 行,如果长度为 6 个字符(数字)

标签 bash csv grep width line

问题

我需要在bash中,根据第3列除以csv中grep行,仅当它仅由组成时6 位数字

示例

输入文件。

,11,221951
,11,221952
,11,232928
,11,45
,11,4
,11,5
,11,6
,11,6

输出文件(仅基于第 3 列的行,其中有 6 个字符)。

,11,221951
,11,221952
,11,232928

我尝试过

cut -d, -f3 input_file.csv | grep -x '.\{6\}'

但它当然会删除前两列。

谢谢。

最佳答案

您可以使用

awk -F',' '$3 ~ /^[0-9]{6}$/' file > newfile

这里,

  • -F',' 将字段分隔符设置为 ,
  • '$3 ~/^[0-9]{6}$/' 保留第三个字段值仅包含 6 位数字的行。

请参阅online demo :

s=",11,221951
,11,221952
,11,232928
,11,45
,11,4
,11,5
,11,6
,11,6"

awk -F',' '$3 ~ /^[0-9]{6}$/' <<< "$s"

输出:

,11,221951
,11,221952
,11,232928

关于Bash,根据第 3 列从 csv 中 grep 行,如果长度为 6 个字符(数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57672681/

相关文章:

bash - vim:如果为空,则将第二列空白替换为同一列中的值

node.js - 用户的Nodejs CSV数据导出系统

使用 grep 过滤同时条件

shell - 为 IBMi IFS 上的目录中的每个文件递归搜索目录

java - 将 Java 管道传输到 Grep : Why not working?

java - 使用来自java的参数执行shell脚本

linux - BASH - 我如何从整个目录中搜索一个值并找到一些匹配的值,然后通过保存它来即时替换该行

bash - 从一列中,取每 3 个值并将它们排成一行

python - CSV文件解析(python)

c - 当表格损坏时用 C 读取 CSV