SEDまたはAWKを使用して文字列を新しい列と行に移動する

SEDまたはAWKを使用して文字列を新しい列と行に移動する

タブ区切りの.csvファイルがあり、ヘッダー行情報を最初の「新しい」列に移動し、指定された行数だけ下に移動する必要があります。sedまたはなど、現在使用している標準ツールを使用したいが、awk他のツール/アプローチがより適切な場合は、提案を歓迎します。各ファイルのタイトルが変更されるため、適切な行と列に "CAT"文字列を配置する代わりにファイルをコピーする必要があります。

                            CAT
    DOG     DOG     DOG     DOG     DOG     DOG     DOG
    DOG     DOG     DOG     DOG     DOG     DOG     DOG
    DOG     DOG     DOG     DOG     DOG     DOG     DOG
    DOG     DOG     DOG     DOG     DOG     DOG     DOG

になります:

                            CAT
            DOG     DOG     DOG     DOG     DOG     DOG     DOG
            DOG     DOG     DOG     DOG     DOG     DOG     DOG
    CAT     DOG     DOG     DOG     DOG     DOG     DOG     DOG
            DOG     DOG     DOG     DOG     DOG     DOG     DOG

ベストアンサー1

paste次のようにすることもできます。

編集済み

これにより、最初の行が再印刷されます。引用符がないことを使用して末尾のスペースは表示されません。

$ paste -d"\t" <(printf "\n\n\n%s" $(head -1 file)) file
                                    CAT
            DOG     DOG     DOG     DOG     DOG     DOG     DOG
            DOG     DOG     DOG     DOG     DOG     DOG     DOG
CAT         DOG     DOG     DOG     DOG     DOG     DOG     DOG
            DOG     DOG     DOG     DOG     DOG     DOG     DOG

オリジナル

$ -d"\t" <(printf "\n\n\nCAT") file
                                    CAT
            DOG     DOG     DOG     DOG     DOG     DOG     DOG
            DOG     DOG     DOG     DOG     DOG     DOG     DOG
CAT         DOG     DOG     DOG     DOG     DOG     DOG     DOG
            DOG     DOG     DOG     DOG     DOG     DOG     DOG

おすすめ記事