我有问题。起初我将xlsm转换为tsv。一列有\ n分隔字符串,如果我使用xlsx2csv工具,我从这一行收到了三行。
F.E。: XLSM文件:
> 2 LO rofl string_A
> 1 HI lol "string|
> string_2|
> string_3"
在.TSV文件中
> 2 LO rofl string_A
> 1 HI lol "string|
> string_2|
> string_3"
如果列$ 1以string2或string3开头,我想自动获取所有行:
> 2 LO rofl string_A
> 1 HI lol "string|string2|string3"
请你帮助我,最好用awk或sed取悦。 谢谢..
答案 0 :(得分:1)
真的不清楚你在寻求帮助 - xlsm格式文件,无论它们是什么,或xlsx2csv,无论是什么(每个人和他们的奶奶都有这个名字的工具,我怀疑你是不是在打电话给我! ),或似乎不包含任何选项卡或其他内容的tsv文件。从晴天的输入示例中你也可能看到你可能有的下雨天情况(例如嵌入式"
)以及文件的每一行是否真的以>
开头,或者你是否只是不知道如何格式化你的例子。
所以,考虑到所有这些,尝试使用GNU awk进行多字符RS和RT:
awk -v RS='"[^"]*\n[^"]*"' '{gsub(/\s*\n\s*/,"",RT); ORS=RT} 1' file
祝你好运!
例如:
$ cat file
2 LO rofl string_A
1 HI lol "string|
string_2|
string_3"
$ awk -v RS='"[^"]*\n[^"]*"' '{gsub(/\s*\n\s*/,"",RT); ORS=RT} 1' file
2 LO rofl string_A
1 HI lol "string|string_2|string_3"