首页 > 解决方案 > 正则表达式正则表达式从行中检索双引号中的字段

问题描述

我有一个包含几行这样的文件(以下两个示例行):

any_string,N/A,Input,1,1,1,06/13/2019 17:14:04,1560456844,8361,Error loading row to target table [any_string]. Error message [
FnName: Execute -- [Informatica][ODBC Oracle Wire Protocol driver][Oracle]ORA-01400: cannot insert NULL into (""any_string"".""any_string"".""any_string"")],2,""12345678"";""1234"";""0"";""123456789"";""12"";""123456789123"";""3"";""12345"";""87654321"";""12345"";""any_string"";""1"";"""";""1"";"""";"""";"""",N/A,N/A,-1,-1,N/A

我需要一个 shell 脚本来从上面的两行中提取唯一的以下摘录以写入另一个文件:

""12345678"";""1234"";""0"";""123456789"";""12"";""123456789123"";""3"";""12345"";""87654321"";""12345"";""any_string"";""1"";"""";""1"";"""";"""";""""

我将不胜感激正则表达式的任何提示来完成任务。输入:

any_string,N/A,Input,1,1,1,06/13/2019 17:14:04,1560456844,8361,Error loading row to target table [any_string]. Error message [
FnName: Execute -- [Informatica][ODBC Oracle Wire Protocol driver][Oracle]ORA-01400: cannot insert NULL into (""any_string"".""any_string"".""any_string"")],2,""12345678"";""1234"";""0"";""123456789"";""12"";""123456789123"";""3"";""12345"";""87654321"";""12345"";""any_string"";""1"";"""";""1"";"""";"""";"""",N/A,N/A,-1,-1,N/A

预期输出:

""12345678"";""1234"";""0"";""123456789"";""12"";""123456789123"";""3"";""12345"";""87654321"";""12345"";""any_string"";""1"";"""";""1"";"""";"""";""""

标签: regexbashshell

解决方案


$ awk -F, '/"/{print $(NF-5)}' file
""12345678"";""1234"";""0"";""123456789"";""12"";""123456789123"";""3"";""12345"";""87654321"";""12345"";""any_string"";""1"";"""";""1"";"""";"""";""""

如果这不是您所需要的,那么编辑您的问题以更好地描述您的要求并提供更具代表性的示例输入/输出。


推荐阅读