0

ハッシュのようなファイルを検索する必要があります。awkが正しい解決策かどうか疑問に思う

入力例:

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

コンテキストに応じて、2つの異なる出力が必要です。

キーを取得する:

bla ble bli blo

そしてsearch(ble)

www.ble.com

私はこれが些細なことだと思っていましたawk

編集:入力フォーマットの説明を改善

4

3 に答える 3

1

キーを取得:

kent$  grep -oP "^\w+(?= )" file
bla
ble
bli
blo

awk を使用して 1 行にまとめたい場合

kent$  awk 'NR!=2{printf $1" "}' test
bla ble bli blo 
于 2013-01-18T12:28:45.547 に答える
1

このような1つの方法(要件ではあまり明確ではありません):

$ awk '!/^#/{a[$1]=$2}END{print a[x];}' x='ble' file
www.ble.com
于 2013-01-18T12:28:18.230 に答える
0

フォーマットについてはあまり明確ではありません...まずこれはどうですか?

$ awk '/^[^#]/{print $1}/www/{print $2}' input.txt
bla
ble
www.ble.com
bli
blo

または「2 つの異なる出力:

/^[^#]/ {
    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
于 2013-01-18T12:27:24.213 に答える