Text-Processing

將資訊從 .dat 添加到 .csv 文件

  • March 7, 2017

我有一個這樣的文本文件:

sn,device_id,ip_address
P7K08UQ         , BIOTERIO, 148.111.83.177
H006K022        , N7K-LAN(JAF1651ANDL), 148.111.4.111
FNS174002FT     , LAB_PESADO, 148.111.131.188
FNS14420533     , Arquitectura_Salones, 148.111.135.44
H006K021        , CIVIL_253, 148.111.132.666
H006K083        , Arquitectura, 148.111.134.111
H006K032        , ING_CIVIL, 148.111.133.777
FNS16361SG0     , ING_CIVIL_DIR, 148.111.4.188
H006K040        , Ingenieria_Posgrado, 148.111.137.253
00000MTC1444080Z, Biblio_Barragan, 148.111.136.61
FNS11190FLE     , Electronica_Edif_3, 148.111.130.253

還有一個是這樣的:

SN: FDO1129Z9ZJ
Barragan_3750
IP address: 148.111.4.122

我想將第二個文件的資訊添加到第一個文件中,awk如下所示:

sn,device_id,ip_address
    P7K08UQ         , BIOTERIO, 148.111.83.177
    H006K022        , N7K-LAN(JAF1651ANDL), 148.111.4.111
    FNS174002FT     , LAB_PESADO, 148.111.131.188
    FNS14420533     , Arquitectura_Salones, 148.111.135.44
    H006K021        , CIVIL_253, 148.111.132.666
    H006K083        , Arquitectura, 148.111.134.111
    H006K032        , ING_CIVIL, 148.111.133.777
    FNS16361SG0     , ING_CIVIL_DIR, 148.111.4.188
    H006K040        , Ingenieria_Posgrado, 148.111.137.253
    00000MTC1444080Z, Biblio_Barragan, 148.111.136.61
    FNS11190FLE     , Electronica_Edif_3, 148.111.130.253
    FDO1129Z9ZJ     , Barragan_3750, 148.111.4.122

主要工作是將“第二”文件中的三行合併為一行。假設文件格式是您在範例中給出的格式,下面的 awk 就可以做到這一點

awk '{ printf "%s", $NF; if (NR % 3 == 0) print ""; else printf "," }' second_file

現在第二部分正在添加到 file1,這可以通過簡單的重定向來完成>>

那麼完整的命令將是

awk '{ printf "%s", $NF; if (NR % 3 == 0) print ""; else printf "," }' second_file >> first_file

引用自:https://unix.stackexchange.com/questions/349643