他のすべての列を結合するには、sedまたはawkを使用します。

他のすべての列を結合するには、sedまたはawkを使用します。

次の形式の大きなテキストファイル(666000列)があります。

A B C D E F

希望の出力

AB CD EF

sedまたはでどのようにこれを行うことができますかawk?いくつか試してみましたが、何も動作しないようです。何かを提案してください。

ベストアンサー1

存在するsed

sed 's! \([^ ]\+\)\( \|$\)!\1 !g' your_file

その後、置換が実行され、結果が標準出力として印刷されます。ファイルを変更するには、-iスイッチを追加してください。

sed -i 's! \([^ ]\+\)\( \|$\)!\1 !g' your_file

説明する

このsedコマンドは、空白、空白ではなく、1 つ以上の文字、最後に空白、または行末を探します。シーケンスを見つかった空白以外の文字に置き換え、その後に空白が続きます。g修飾子は最後に提供されるため、置換は行全体にわたって可能な限り適用されます(これをグローバル置換と呼びます)。したがって、基本的に、このようなシーケンスの場合、A B Cパターンsed「B」が発見され、「B」に置き換えられ、AB C最終結果が残る。

このコードの仮定

たとえば、このコードでは、列間の空白が実際にはタブではなく空白であるとします。この問題は簡単に解決できますが、読みやすさが低下します。

sed 's![[:blank:]]\+\([^[:blank:]]\+\)\([[:blank:]]\+\|$\)!\1 !g' your_file

おすすめ記事