2014-02-25 37 views
1

我的数据如下所示:C外壳子串比较

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 

回答

1

试试这个:

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

您检查使用match operator~)阻止图形看起来开始与1/^1/)行的第一列($1)。如果这是真的,则打印第二列的动作发生。

+0

**代码高尔夫:**'awk'$ 1〜/^1/&& $ 0 = $ 2'file.txt' –

0

我会使用grepcut

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

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

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

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