簡體   English   中英

Unix Shell:一行中獲取文件的每個標頭

[英]Unix shell: get each header of a file in one line

讓我們有一個文件頭,其格式為:

head_name_1 head_name_2 head_name_3 ... head_name_N

假設定界符是一個制表符(因此,如果我們以某種方式使用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的數字列表。

要用換行符替換所有標簽:

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

tr真的很簡單。 替代解決方案:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM