Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用awk在文件中搜索_Bash_Awk - Fatal编程技术网

Bash 使用awk在文件中搜索

Bash 使用awk在文件中搜索,bash,awk,Bash,Awk,我需要像散列一样搜索文件。想知道awk是否是正确的解决方案 输入示例: bla 123.123.123.0 # This line should be a comment ble www.ble.com bli <random whitespace> ::1 blo anything 和搜索(ble) 我希望这对于awk 编辑:改进了输入格式的描述不太清楚格式。。。这个怎么样 $ awk '/^[^#]/{print $1}/www/{print $2}' in

我需要像散列一样搜索文件。想知道awk是否是正确的解决方案

输入示例:

bla   123.123.123.0
# This line should be a comment
ble      www.ble.com
bli  <random whitespace> ::1
blo   anything
和搜索(ble)

我希望这对于
awk


编辑:改进了输入格式的描述

不太清楚格式。。。这个怎么样

$ awk '/^[^#]/{print $1}/www/{print $2}' input.txt
bla
ble
www.ble.com
bli
blo
或“两种不同的输出:

/^[^#]/ {
    k[$1]++
}
/www/ {
    w[$2]++
}

END {
    print "keys:"
    for (x in k)
        print "\t"x
    print "urls:"
    for (x in w)
        print "\t"x
}

输出:

$ awk -f keys.awk input.txt
keys:
    bla
    ble
    bli
    blo
urls:
    www.ble.com
这样的一种方式(要求不太清楚):

获取密钥:

kent$  grep -oP "^\w+(?= )" file
bla
ble
bli
blo
如果你想让它们和awk排成一行

kent$  awk 'NR!=2{printf $1" "}' test
bla ble bli blo 

您期望的确切输出是什么?
$ awk '!/^#/{a[$1]=$2}END{print a[x];}' x='ble' file
www.ble.com
kent$  grep -oP "^\w+(?= )" file
bla
ble
bli
blo
kent$  awk 'NR!=2{printf $1" "}' test
bla ble bli blo