Csv 如果字段结尾与AWK中的字符串匹配,则打印行

Csv 如果字段结尾与AWK中的字符串匹配,则打印行,csv,awk,Csv,Awk,我有一个csv文件,如果某个特定字段以特定字符串结尾,我将尝试使用awk打印行。例如,我有以下CSV文件: col1,col2,col3 1,abcd,.abcd_efg 2,efgh,.abcd 3,ijkl,.abcd_mno 4,mnop,.abcd 5,qrst,.abcd_uvw 这就是我追求的结果: 2,efgh,.abcd 4,mnop,.abcd 但是我得到了一个不同的结果。这是我正在使用的awk命令: cat file.csv | awk -F"," '{if ($3 ~

我有一个csv文件,如果某个特定字段以特定字符串结尾,我将尝试使用awk打印行。例如,我有以下CSV文件:

col1,col2,col3
1,abcd,.abcd_efg
2,efgh,.abcd
3,ijkl,.abcd_mno
4,mnop,.abcd
5,qrst,.abcd_uvw
这就是我追求的结果:

2,efgh,.abcd
4,mnop,.abcd
但是我得到了一个不同的结果。这是我正在使用的awk命令:

 cat file.csv | awk -F"," '{if ($3 ~ ".abcd" ) print $0}'
这就是我得到的结果:

1,abcd,.abcd_efg
2,efgh,.abcd
3,ijkl,.abcd_mno
4,mnop,.abcd
5,qrst,.abcd_uvw
我尝试了以下事件,但未返回匹配的事件,因此无法运行:

cat file.csv | awk -F"," '{if ($3 ~ ".abcd$" ) print $0}'
有什么线索吗?我是否使用了错误的表达式来得到这个结果

编辑:这是我在尝试Kent的解决方案时尝试的另一个命令,但无效:

cat file.csv | awk -F"," '$3 ~ "[.]abcd"'

您可以修改
awk
命令,如下所示:

$ cat file.csv | awk '$3 ~ /\.abcd$/ {print $0}'
2    efgh .abcd
4    mnop .abcd
简要说明

  • $3~/.bao$/
    :如果
    $3
    与regex
    匹配,则打印
    $0
根据修改后的问题,您可以将
awk
命令更改为:

cat file.csv | awk -F, '$3 ~ /\.abcd$/ {print $0}'

您可以修改
awk
命令,如下所示:

$ cat file.csv | awk '$3 ~ /\.abcd$/ {print $0}'
2    efgh .abcd
4    mnop .abcd
简要说明

  • $3~/.bao$/
    :如果
    $3
    与regex
    匹配,则打印
    $0
根据修改后的问题,您可以将
awk
命令更改为:

cat file.csv | awk -F, '$3 ~ /\.abcd$/ {print $0}'
  • 首先,
    cat文件| awk…
    中的
    cat
    是无用的,只是
    awk。。。文件

  • 您的输入文本没有单个逗号,为什么要设置
    FS=“,”

  • 如果要进行精确的字符串比较,请使用
    $3==“which”
    而不是
    $3~/regex/
因此,您的代码可以更改为:

awk  '$3 == ".abcd"' file
  • 如果你真的喜欢正则表达式,并且想用正则表达式匹配的方式来实现:

    awk  '$3 ~ "[.]abcd$"' file
    

取决于您的要求。

  • 首先,
    cat文件| awk…
    中的
    cat
    是无用的,只是
    awk。。。文件

  • 您的输入文本没有单个逗号,为什么要设置
    FS=“,”

  • 如果要进行精确的字符串比较,请使用
    $3==“which”
    而不是
    $3~/regex/
因此,您的代码可以更改为:

awk  '$3 == ".abcd"' file
  • 如果你真的喜欢正则表达式,并且想用正则表达式匹配的方式来实现:

    awk  '$3 ~ "[.]abcd$"' file
    


取决于您需要什么。

代码。(点)
表示任何字符谢谢。我将其修改为
\。
@CWLiu:您不需要
{print$0}
出现。这是照顾你的解决方案,但该文件是一个csv文件,我忘了在我的问题中添加逗号。我添加了它们。我尝试过这个解决方案,但对我来说就是不起作用。解析csv文件时,这是否有效?@Dr.Bake我已经为您修改的问题添加了答案。
。(点)
表示任何字符谢谢。我将其修改为
\。
@CWLiu:您不需要
{print$0}
出现。这是照顾你的解决方案,但该文件是一个csv文件,我忘了在我的问题中添加逗号。我添加了它们。我尝试过这个解决方案,但对我来说就是不起作用。当解析csv文件时,这是否有效?@Dr.Bake我已经为您修改的问题添加了答案。该文件是csv文件,有逗号,但我忘了包含它们。我刚刚编辑了我的问题并添加了它们。顺便说一句,我只是尝试了你的解决方案,但没有成功。我设置了FS=“,”并尝试使用正则表达式,但没有成功。可能是因为我正在搜索字段末尾的特定字符串?@Dr.Bake
我刚刚尝试了您的解决方案,…
您尝试的不是我的解决方案。你读过我的答案吗?这个文件是csv文件,有逗号,但我忘了包括它们。我刚刚编辑了我的问题并添加了它们。顺便说一句,我只是尝试了你的解决方案,但没有成功。我设置了FS=“,”并尝试使用正则表达式,但没有成功。可能是因为我正在搜索字段末尾的特定字符串?@Dr.Bake
我刚刚尝试了您的解决方案,…
您尝试的不是我的解决方案。你看过我的答案了吗?