使用AWK命令跳过第一行,并确定特定列中是否有一个’/’,而这个列恰好是CSV文件中的一个日期

使用AWK命令跳过第一行,并确定特定列中是否有一个’/’,而这个列恰好是CSV文件中的一个日期

问题描述

使用AWK命令跳过第一行,并确定特定列中是否有一个’/’,而这个列恰好是CSV文件中的一个日期,尽管根据我的要求,日期字段必须只能以’YYYY-MM-DD’的格式而不能包含斜杠。

这是我目前拥有的代码,但我无法使其识别日期字段(第11列)中的斜杠,并将其视为无效并输出相应记录。

我不是一位有经验的脚本编写者,请帮忙 🙂

awk -F \| '{if(NR > 1) {{11~/[/]/}}}'datadir/sys_slate_app_test.csv > "invalid_other.txt"


   awk: fatal: cannot open file `/sys_slate_app_test.csv' for reading (No such file or directory)
awk -F \| '{if(NR > 1) {{11~/^//}}}'datadir/sys_slate_app_test.csv > "invalid_other.txt"

   awk: cmd. line:1: {if(NR > 1) {{$11~/^//}}}
   awk: cmd. line:1:                       ^ syntax error

数据:

"30"|"958433018"|"999999999"|"11111111"|"202340"|""|"222222222"|"Tyler"|"Ward"|"[email protected]"|"2022/08/23"|"UG"|"TR"|"0"|"0"|"0"|"2"|"1"|"RD"|"0"|"1"|"2023-03-09"
"30"|"958433018"|"999999999"|"11111111"|"202340"|""|"222222222"|"Tyler"|"Ward"|"[email protected]"|"2022/09/10"|"UG"|"TR"|"0"|"0"|"0"|"2"|"1"|"RD"|"0"|"1"|"2023-03-09"
"30"|"958433018"|"999999999"|"11111111"|"202340"|""|"222222222"|"Tyler"|"Ward"|"email32[email protected]"|"2022-08-23"|"UG"|"TR"|"0"|"0"|"0"|"2"|"1"|"RD"|"0"|"1"|"2023-03-09"
"30"|"958433018"|"999999999"|"11111111"|"202340"|""|"222222222"|"Tyler"|"Ward"|"[email protected]"|"2022-06-11"|"UG"|"TR"|"0"|"0"|"0"|"2"|"1"|"RD"|"0"|"1"|"2023-03-09"
"30"|"958433018"|"999999999"|"11111111"|"202340"|""|"222222222"|"Tyler"|"Ward"|"[email protected]"|"2022/08/23"|"UG"|"TR"|"0"|"0"|"0"|"2"|"1"|"RD"|"0"|"1"|"2023-03-09"

解决方案

你在问题中没有展示预期输出,所以我不知道这个是否正确,但这是我所能理解并实施的最佳方案:

$ awk -F'|' '(NR > 1) && ($11 ~ "/")' file
"30"|"958433018"|"999999999"|"11111111"|"202340"|""|"222222222"|"Tyler"|"Ward"|"[email protected]"|"2022/09/10"|"UG"|"TR"|"0"|"0"|"0"|"2"|"1"|"RD"|"0"|"1"|"2023-03-09"
"30"|"958433018"|"999999999"|"11111111"|"202340"|""|"222222222"|"Tyler"|"Ward"|"[email protected]"|"2022/08/23"|"UG"|"TR"|"0"|"0"|"0"|"2"|"1"|"RD"|"0"|"1"|"2023-03-09"

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程