我有一个看起来像这样的文本文件:
A one two three
B four five six
每个标签分隔。
我希望每个标签都有换行符,但保留第一列如:
A one
A two
A three
B four
B five
B six
插入我知道的新行(awk'{$ 1 = $ 1} 1'FS =“\ t”OFS =“\ n”)将不会保留我的第一列
有人可以帮我重新格式化我的文件吗?
答案 0 :(得分:1)
使用awk:
awk -F '\t' -v OFS='\t' '{ for(i = 2; i <= NF; ++i) print $1, $i }' filename
代码非常简单:
{ # in every line
for(i = 2; i <= NF; ++i) { # wade through the fields, starting
# with the second
print $1, $i # and print the first field followed by
# the current one.
}
}
-F '\t'
选项将输入字段分隔符设置为选项卡,因此该行在选项卡处拆分,-v OFS='\t'
将输出字段分隔符设置为制表符,以便输出中的字段为也用标签分隔。
然后:
$ od -c filename # to show that the input file is tab-separated
0000000 A \t o n e \t t w o \t t h r e e \n
0000020 B \t f o u r \t f i v e \t s i x \n
0000040
$ awk -F '\t' -v OFS='\t' '{ for(i = 2; i <= NF; ++i) print $1, $i }' filename
A one
A two
A three
B four
B five
B six