テキストファイルをソートして編集して新しいファイルを出力します。

テキストファイルをソートして編集して新しいファイルを出力します。

この問題にはいくつかの手順があります。

次のデータがありますが、まず2列、5列、1列の順に並べ替えたいと思います。次に、列5と6を区切り文字に結合したいと思います。値が変更されると、5から6の間の新しい値が新しいデータを印刷します。上部には5-6の新しい値があります。

たぶん、例は役に立ちます。

生データ。

fldr   cable   pdu_edit stu     grnd_sta chan_pdu

64      3       1       13      145     156     
66      3       1       13      145     156     
79      1       1       9       97      108     
117     3       1       13      145     156     
240     3       1       13      145     156     
255     3       1       13      145     156     
263     3       1       13      145     156     
291     3       1       13      145     156     
817     1       1       9       97      108     
946     1       1       9       97      108    

印刷したときの様子は次のとおりです。

Cable 1

97-108                         
79,817,946

Cable 3

145-156  
64,66,117,240,255,263,291

まだ遠くに行っていません。ソートするには、次のものを使用しました。

sort -k2 -k5 -k1 filename.txt

その後、印刷するには、次を使用します。

awk '{if ($2==1 && $5==97) {print $1}}' filename.txt | xargs | sed -e 's/ /,/g' | sort 

ただし、上記の場合は、ケーブル番号とgrnd_staで検索する番号を選択してください。しかし、私はこれに慣れておらず、歩く方法を学ぶ前に走ることを試みると思います。例のようなテキストファイルを生成するためにこれをどのように組み合わせるのかわかりません。ケーブル番号に応じてgrnd_staが変更されるようにif関数を使用する必要があると思います。

ベストアンサー1

SQLの場合、これは単純な操作のように見えます。

csv+ sql==csvsqlからcsvkit

pip経由でインストールできます。

始める前にこれを行う前にファイルを変更したい場合があります。各行の末尾の空白行とスペースを削除します。

sed -i.bak '2d;s/[[:blank:]]*$//' file

途中であきらめることができます。

csvsql \
    -d' ' -S \
    --query 'select cable,grnd_sta || "-" || chan_pdu,group_concat(fldr) from file group by cable' \
    file \
| csvformat -D' '
  • ファイルがタブで区切られている場合は、代わりに必要になることがあります-t-d' '
  • csvformat -D' 'カンマ区切りの出力のみが出力されるため、スペースで区切られた出力を取得するために使用されます csvsql。処理が簡単ですが、awkcsvsqlは私たちが望んでいない最後の列の周りに引用符を付けます!

出力:

cable "grnd_sta || ""-"" || chan_pdu" group_concat(fldr)
1 97-108 79,817,946
3 145-156 64,66,117,240,255,263,291

ここでは、以下を引き続き使用できますawk

... \
| awk 'NR>1{printf "Cable %s\n\n%s\n%s\n\n",$1,$2,$3}' \
| head -n-1

出力:

Cable 1

97-108
79,817,946

Cable 3

145-156
64,66,117,240,255,263,291

おすすめ記事