0

基本的に、固有の情報を含む 3 つのテキスト ファイルから情報を読み取ろうとしています。

テキストファイルのセットアップ方法は次のとおりです。

textA.txt
----------------
something.awesome.com
something2.awesome.com
something3.awesome.com
...

textB.txt
----------------
123
456
789
...

textC.txt
----------------
12.345.678.909
87.65.432.1
102.254.326.12
....

今、私がこのようなものを出力すると、どのように見えると思いますか

something.awesome.com : 123 : 12.345.678.909
something2.awesome.com : 456 : 87.65.432.1
something3.awesome.com : 789 : 102.254.326.12

私が今試しているコードは次のとおりです。

for each in `cat site.txt` ; do
    site=`echo $each | cut -f1`

    for line in `cat port.txt` ; do
        port=`echo $line | cut -f1`

        for this in `cat ip.txt` ; do
            connect=`echo $this | cut -f1`

            echo "$site : $port : $connect"
        done
    done
done

私が得ている結果は狂ったように間違っていて、私が望むものではありません。これを修正する方法がわかりません。

可変形式で情報を呼び出せるようにしたい。

4

3 に答える 3

7
paste testA.txt testB.txt testC.txt | sed -e 's/\t/ : /g'

出力は次のとおりです。

something.awesome.com:123:12.345.678.909
something2.awesome.com:456:87.65.432.1
something3.awesome.com:789:102.254.326.12

編集:これは純粋なものを使用した解決策bashです:

#!/bin/bash                                                                                                                         

exec 7<testA.txt
exec 8<testB.txt
exec 9<testC.txt

while true
do
    read site <&7
    read port <&8
    read connect <&9

    [ -z "$site" ] && break

    echo "$site : $port : $connect"
done

exec 7>&-
exec 8>&-
exec 9>&-
于 2012-07-19T13:22:47.130 に答える
0

ペーストの使用を見たことがありますか?

例えば

$ paste testA.txt testB.txt

-d演算子は、区切り文字を指定します。

関連するユーティリティはSQLのような結合であり、入力ファイルに共通のフィールドを使用して結合する必要があるシナリオで使用できます。

于 2012-07-19T13:24:23.577 に答える
-1
head -2 /etc/hosts | tail -1 | awk '{print$2}'

/etc/hostsファイルの名前です。
(head -2 )ファイルから上位 2 行を取得するために使用されます。
(tail -1)から出力された最後の 1 行だけを取得するために使用されます(head -2)
(awk '{print$2}')から出力される行の 2 列目を印刷するために使用され(tail -1)ます。

于 2012-09-20T06:57:50.417 に答える