2016-08-22 5 views
0

のは、私は次のファイルがあるとしましょう:私は2つだけで素敵なテーブルを作成したい1列としてLinuxで複数の列からテーブルを作成しますが、フィールド2を扱う、3(そしておそらく4)

al.pacino Al Pacino 
jerry.seinfeld  Jerry Seinfeld 
chad.murray Chad Michael Murray 

を列と、このように、1列として最初の名前/ミドルネーム/ラストネームを扱う:

私はコマンド「-t欄」を使用する場合の問題は、各フィールドは、個々の列として扱われますされていることを
al.pacino  Al Pacino 
jerry.seinfeld Jerry Seinfeld 
chad.murray  Chad Michael Murray 

これは私が望んでいないものです:

al.pacino  Al  Pacino 
jerry.seinfeld Jerry Seinfeld 
chad.murray  Chad Michael Murray 
+0

あなたは 'awk'を調べましたか?あなたのファイルをawkに読み込み、あなたが必要とするフォーマットされた出力を生成するようにあなたのデータを何らかの制御をします。 –

+0

awkを調べましたが、唯一の解決策は、最初の2つのフィールドを抽出し、それらの2つのテーブルを作成し、3番目または4番目のフィールドに「スペース」区切り文字を追加することでした。しかし、私はよりエレガントなアプローチが必要なように感じる。 – Andy

+0

'column -t -s $ '\ t''?入力フィールドはタブで区切ります。 – 123

答えて

0

2タブ区切りの列になり、私は内容を読むことによって、AWKでそれを行うために管理二つの変数(フルネームとログイン名と第二との最初の1)から:

awk 'NR==FNR { a[FNR] = $0 ; if (length > max) max = length ; next } { printf "%-*s %s\n", max, a[FNR], $0 }' <(echo "${login_names}") <(echo "${full_names}") 

結果に関係なく名前がどのように異なる長さで見栄えの良い、きれいなテーブルではありません

3

SEDを持つ2つの列の間にタブを挿入します - 標準入力上の入力onelinerこれを養う - 出力が

sed -r 's/ +/\t/' 
+0

は、Al Pacinoの代わりに、 "cristopher.reeve Christopher Reeve"が最初の行にあるなど、すべての状況で正常に機能しません。 – Andy

+0

これには本当に何もありません。他の種類の空白がある可能性があります。入力の最初の列の後のタブ?あなたはcat-Aをタックして出力を表示できますか? – pakistanprogrammerclub

+0

各列の間にスペースのみがあります。 – Andy

関連する問題