我有一个日常脚本,需要在上传到数据库之前提取错误日志并从master csv文件中删除用户。 我能够使用awk提取第一列并获得很好的结果。但是,我从第三方应用程序返回的错误在错误列中包含逗号。这会阻止完全匹配并导致问题。
这是我收到的错误文件的示例
"USER_ID","FIRSTNAME","LASTNAME","ERROR"
"CA781558","Dani","Roper","parent is inactive, cannot update record"
"BT055163","Alexis","Richardo","parent is inactive, cannot update record"
"LN764767","Peter","Rajosz","no parent record, update denied"
"SG839717","Jerry","Alindos","parent is inactive, cannot update record"
我需要完全匹配" 父级处于非活动状态,无法更新记录",使用它来更新父记录,因此可以更新。 同样,我需要匹配" 无父记录"所以我可以为此记录和流程添加父级。 实际上,我有一些类似的错误消息需要不同的操作。使用逗号匹配确切的字符串是至关重要的。
预期输出为:
"USER_ID"
"CA781558"
"BT055163"
"SG839717"
答案 0 :(得分:1)
使用awk
即可:
s='parent is inactive, cannot update record'
awk -v s="\"$s\"" -F, 'NR==1 || $0 ~ s{print $1}' file
"USER_ID"
"CA781558"
"BT055163"
"SG839717"
答案 1 :(得分:1)
只需使用此功能(awk
就此而言过度杀伤):
cat infile.txt | grep 'parent is inactive, cannot update record' | cut -d ',' -f1
答案 2 :(得分:0)
我会选择合适的csv解析器。以下是使用核心模块Are there conventions on how to name resources?的示例,因此您无需从CPAN下载它。
$( document ).scroll( function( e ) {
if ( $(document).scrollTop() > 250 ) {
$('html, body').animate({
scrollTop: $("#cy-hero-image").offset().top
}, 650);
}
});