次のファイルがあります
Id 123
Name john
Lastname udosen
Tel 123456
Id 124
Name james
Lastname david
Tel 19865
ファイルを印刷する方法は次のとおりです。
Id Name Lastname Tel
123 john udosen 123456
124 james david 19865
答え1
タブ区切りの出力が欲しいとしましょう。
$ { printf '%s\n' Id Name Lastname Tel; sed 's/^[^[:blank:]]*.//' file; } | paste - - - -
Id Name Lastname Tel
123 john udosen 123456
124 james david 19865
sed
各行(タイトル)から最初のスペースまたはタブ区切りの単語を削除するために使用されます。結果をpaste
フォーマットに提供し、タブで区切られた4つの列にフォーマットします。まず、出力を使用してヘッダーを追加しますprintf
。
テーブルを作成するために使用できる見栄えの良い(並べ替えられた)出力が必要ですcolumn
。ここでは列間にpaste
挿入し;
、それを使用してcolumn
フィールドをソートするように指示します。
$ { printf '%s\n' Id Name Lastname Tel; sed 's/^[^[:blank:]]*.//' file; } | paste -d ';' - - - - | column -t -s ';'
Id Name Lastname Tel
123 john udosen 123456
124 james david 19865
また使用できますcsvlook
(一部csvkit)は同様の方法でMarkdown形式のテーブルを作成します。
$ { printf '%s\n' Id Name Lastname Tel; sed 's/^[^[:blank:]]*.//' file; } | paste -d ';' - - - - | csvlook -I -d ';'
| Id | Name | Lastname | Tel |
| --- | ----- | -------- | ------ |
| 123 | john | udosen | 123456 |
| 124 | james | david | 19865 |