我的文件格式如下(空格是一个标签)
sentenceA1 sentencek1
sentencek2
sentencek3
sentenceA2 sentencel1
sentencel2
我希望输出为:
sentenceA1 sentencek1
sentenceA1 sentencek2
sentenceA1 sentencek3
sentenceA2 sentencel1
sentenceA2 sentencel2
我尝试通过创建两个文件(使用sed)来分隔值,一个用第一个文件,一个用第二个值,但我不知道如何成功合并它们。 这只能使用sed或awk吗?
答案 0 :(得分:3)
这个awk应该可以工作:
awk 'NF==2{p=$1; print; next} {print p, $1}' file
A1 k1
A1 k2
A1 k3
A2 l1
A2 l2
答案 1 :(得分:0)
awk '!/^\t/{p=substr($0,1,index($0,"\t"))} /^\t/{$0=p$0}1' input
答案 2 :(得分:0)
这只是基于anubhavas帖子重写的awk
以获取正确的数据。
awk -F"\t" '$1{p=$1;print;next} {print p$0}' file
sentenceA1 sentencek1
sentenceA1 sentencek2
sentenceA1 sentencek3
sentenceA2 sentencel1
sentenceA2 sentencel2
由于所有行都有tabs
,因此所有行都会有相同数量的字段
如果行以tab
开头,则第一个字段将为空,因此$1
将对此进行测试。