使用 AWK 打印逗号分隔字段的一部分
Print part of a comma-separated field using AWK
我有一行包含这个字符串:
$DLOAD , 123 , Loadcase name=SUBCASE_1
我试图只打印 SUBCASE_1
。这是我的代码,但出现语法错误。
awk -F, '{n=split(,a,"="); a[n]} {printf(a[1]}' myfile
我该如何解决这个问题?
第一个解决方案: 如果您只想获取最后一个字段(其中包含 =
),则使用您展示的样品请尝试关注
awk -F',[[:space:]]+|=' '{print $NF}' Input_file
第二个解决方案: 或者,如果您想在 =
之后专门获取第三个字段的值,请尝试遵循 awk
代码。只需将逗号后跟 space(s) 作为字段分隔符,并在主程序中将第 3 个字段的存储值拆分到 arr 数组中,然后打印 arr 数组的第 2 个项目值。
awk -F',[[:space:]]+' '{split(,arr,"=");print arr[2]}' Input_file
可能最短的解决方案是:
awk -F= '{print $NF}' file
您只需使用 '='
作为 field-separator,然后打印最后一个字段。
例子Use/Output
在 heredoc 中使用您的示例并引用印记以防止扩展 $DLOAD
,您将:
$ awk -F= '{print $NF}' << 'eof'
> $DLOAD , 123 , Loadcase name=SUBCASE_1
> eof
SUBCASE_1
(当然,在这种情况下,$DLOAD
是否扩展可能无关紧要,但为了完整性,万一 $DLOAD
包含另一个 '='
...)
我有一行包含这个字符串:
$DLOAD , 123 , Loadcase name=SUBCASE_1
我试图只打印 SUBCASE_1
。这是我的代码,但出现语法错误。
awk -F, '{n=split(,a,"="); a[n]} {printf(a[1]}' myfile
我该如何解决这个问题?
第一个解决方案: 如果您只想获取最后一个字段(其中包含 =
),则使用您展示的样品请尝试关注
awk -F',[[:space:]]+|=' '{print $NF}' Input_file
第二个解决方案: 或者,如果您想在 =
之后专门获取第三个字段的值,请尝试遵循 awk
代码。只需将逗号后跟 space(s) 作为字段分隔符,并在主程序中将第 3 个字段的存储值拆分到 arr 数组中,然后打印 arr 数组的第 2 个项目值。
awk -F',[[:space:]]+' '{split(,arr,"=");print arr[2]}' Input_file
可能最短的解决方案是:
awk -F= '{print $NF}' file
您只需使用 '='
作为 field-separator,然后打印最后一个字段。
例子Use/Output
在 heredoc 中使用您的示例并引用印记以防止扩展 $DLOAD
,您将:
$ awk -F= '{print $NF}' << 'eof'
> $DLOAD , 123 , Loadcase name=SUBCASE_1
> eof
SUBCASE_1
(当然,在这种情况下,$DLOAD
是否扩展可能无关紧要,但为了完整性,万一 $DLOAD
包含另一个 '='
...)