根据另一列';s长度(使用awk)?
为了进行解析,我需要在命令行中根据另一列的字符数将第一列的内容拉伸n次 注意:Col2包含混合类型:,[A-Za-z] 我应该这样说:根据另一列';s长度(使用awk)?,awk,sed,command-line,Awk,Sed,Command Line,为了进行解析,我需要在命令行中根据另一列的字符数将第一列的内容拉伸n次 注意:Col2包含混合类型:,[A-Za-z] 我应该这样说: cat myFile.tsv Col1 Col2 Text1 XXXX Text2 XX Text3 XXX 为此: cat myNewFile.tsv Col1 Text1 Text1 Text1 Text1 Text2 Text2 Text3 Text3 Text3
cat myFile.tsv
Col1 Col2
Text1 XXXX
Text2 XX
Text3 XXX
为此:
cat myNewFile.tsv
Col1
Text1
Text1
Text1
Text1
Text2
Text2
Text3
Text3
Text3
你有什么有效的建议吗?
谢谢你:D 使用awk:
awk 'NR==1{print $1; next} {for(i=1; i<=length($2); i++){print $1}}' file
使用for循环。。。您可以使用
length
函数获取字符数。显然,由于内存限制,我无法使用for循环处理它。是否可能?将给定的示例更改为与实际用例相似的内容,除非那些X
足以表示它。。我的意思是循环使用awk,而不是shell,以防您这样尝试。。添加您尝试过的命令,因为它期望您显示您的努力。好的,我将尝试awk循环。这些X仅代表第2列(4,2,3)中的字符数。谢谢!事实上,我想我用awk{for(I=0;isheze-dead ringer)成功地做到了这一点。写了一行,看了看你的答案,唯一的区别是你有额外的{..}
和循环I=0;i@cast尽管此处不需要,但在处理制表符分隔的文件时,请使用-F'\t'
Col1
Text1
Text1
Text1
Text1
Text2
Text2
Text3
Text3
Text3