Unix shell:将文件的每个标题放在一行中

A. *_*unt 1 unix bash shell

让我们有一个文件的标题格式为:

head_name_1 head_name_2 head_name_3 ... head_name_N
Run Code Online (Sandbox Code Playgroud)

假设分隔符是一个选项卡(所以如果我们cut以某种方式使用命令,我们不需要指定它)我想找到一个bash shell命令,它在标准输出中打印以下内容:

head_name_1
head_name_2
head_name_3
...
head_name_N
Run Code Online (Sandbox Code Playgroud)

假设我们事先不知道N(如果有必要,我知道如何找到它):

理想的解决方案:使用不需要明确计算N的命令.

替代解决方案:首先找到N然后做类似的事情

for i in 1 ... N; do head -1 file | cut -f$i; done
Run Code Online (Sandbox Code Playgroud)

我对第二个解决方案有一些问题:

  • 我可以做一个while声明递增$ i的值,但我的终端不能正确识别[]和[[]]进行比较.
  • 如果我想使用一个for语句,我不知道如何生成从1到N的数字列表.

Cyr*_*rus 6

要用换行符替换所有制表符:

tr '\t' '\n' <file >new_file
Run Code Online (Sandbox Code Playgroud)