2016-03-05 51 views
1

讓我們有它的頭是形式的文件:Unix外殼:讓每一個文件的標題在一行

head_name_1 head_name_2 head_name_3 ... head_name_N 

假定分隔符是一個tab(所以我們並不需要指定它如果我們以某種方式使用cut命令),我想找到的是打印在標準輸出下面一個bash shell命令:

head_name_1 
head_name_2 
head_name_3 
... 
head_name_N 

假設我們不知道N的提前(我知道如何如有必要可以找到它):

使用命令並不需要明確地計算N.

替代解決方案

的理想解決方案首先找到N和隨後做這樣的事情

for i in 1 ... N; do head -1 file | cut -f$i; done 

我有這第二個解決方案的一些問題:

  • 我可以做一個while聲明遞增$ i的值,但我的終端無法正確識別[]和[[]]以進行比較。
  • 如果我想使用for聲明,我不知道如何從1生成號碼列表爲N.

回答

6

要由換行符替換所有標籤:

tr '\t' '\n' <file >new_file 
1

tr非常簡單。備用解決方案:

head -1 file | xargs -d '\t' printf "%s\n"