gpt4 book ai didi

linux - 插入新行而不是制表符时保留第一列

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:40 24 4
gpt4 key购买 nike

我有一个如下所示的文本文件:

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") 不会保留我的第一列

谁能帮我重新格式化我的文件?

最佳答案

使用 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

关于linux - 插入新行而不是制表符时保留第一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29275237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com