ファイルの特定の列をフィルタリングしたいのですが。46銃。私はそれから始めたいです。25~まで46、次の方法で:
希望の出力:
Column25 Column26 ... Column47
Column25 Column26 ... Column47
Column25 Column26 ... Column47
正しい awk コマンドがあります。
cat -n <(awk '{n=17;if(NR==1)n=25;for(i=n;i<=NF;i++) a[$i]++} END{for(val in a) print val,a[val]}' filelog.txt)
上記のコマンドは次のものから得られます。25この場合、最後の列まで47。私が望むすべてのフィールドのすべての文字列を印刷しながらうまくいきます。
しかし、ここに問題があります。
印刷する列は次のとおりです。スペース次の方法のようになります。
Column25 Column26 ... Column47
Column25 Column26 [...] Column47
[:space:]Column26 [:space:] Column47
[:space:][:space:] [:space:] [:space:]
Column25 [:space:] [:space:] [:space:]
問題は次のとおりです。特定の列をすべて印刷すると、他の列の文字列が空白と一緒に目的の列に渡されます。
たとえば、
Column25 Column26 ... Column47
Column25 Stringsofcolumn12 Manystrings Stringsofcolumn21
Stringsofcolumn23 Stringsofcolumn5 ofmanycolumns Stringsofcolumn22
Column25 Stringsofcolumn16 blablabla anothermanystrings
この問題を回避するために、印刷したい列のスペースを削除する方法はありますか?
メモ:
列の文字列はヘッダーのテキストと同じです。例:column28
コンテンツ文字列がある場合、文字列はcolumn28
リテラルです。しかし、今はそれが重要ではないと思います。ただコメントだけです。
ありがとうございます!
ベストアンサー1
あなたが欲しいものは何ですか?
cat thefile | tr '\t' ' '| tr -s " " | cut -d' ' -f25-46
問題が解決したら正解で表示してください。