【问题标题】:C Shell Substring CompareC Shell 子串比较
【发布时间】:2014-03-28 10:10:04
【问题描述】:

我的数据如下所示:

1xxxxxx file_name1
0xxxxxx file_name2
0xxxxxx file_name3
0xxxxxx file_name4
1xxxxxx file_name5
0xxxxxx file_name6

我只想打印第一列以“1”开头的文件名。

也就是说,

awk '{if($1 contains '1') then print $2}' file.txt

但是,我不知道如何实现比较语法

也许可以使用通配符方法?

awk '{if($1 == "1"*) then print $2}' file.txt

【问题讨论】:

    标签: linux unix awk string-comparison csh


    【解决方案1】:

    试试这个:

    awk '$1~/^1/{print $2}' file.txt
    

    您使用match operator (~) 对照查找以1 (/^1/) 开头的行的模式检查第一列($1)。如果为真,则执行打印第二列的动作。

    【讨论】:

    • 代码高尔夫: awk '$1~/^1/&&$0=$2' file.txt
    【解决方案2】:

    我会使用grepcut

    grep ^1 data_file | cut -d' ' -f2
    

    【讨论】:

      【解决方案3】:

      使用 jayplas 代码,这甚至可以缩短更多:

      awk '/^1/&&$0=$2' file
      file_name1
      file_name5
      

      测试$1 中的第一个字符,将与字符串$0 的第一个字符相同

      【讨论】:

        猜你喜欢
        • 2016-10-27
        • 2012-06-06
        • 1970-01-01
        • 1970-01-01
        • 2011-03-27
        • 2021-11-19
        • 2016-02-08
        • 2013-11-22
        • 1970-01-01
        相关资源
        最近更新 更多