shell - 在unix中将多行转换为单行
问题描述
我有一列中有多行数据的文件,我希望将多行转换为单行。
这是带有标题的示例
final_date|Notes|Status
04/17/2019|"- OB Team -
Number of Attempt(s): 1
Outcome:other
Order (RMO):0
Campaign : ABC
Additional Notes: not a working number
* If any call return to transfer to OB team *"|Complete
04/18/2019|"- OB Team -
Number of Attempt(s): 3
Outcome: NO ANSWER
Order (RMO): 0
Campaign Name: ABC
*If return call, transfer to OB team*
- OB TEAM -
Number of Attempt(s): 1
Outcome: VM
Order (RMO): 0
Campaign Name: ABC
Additional Notes: None
*If return call, transfer to OB team*"|Complete
以上数据有两条记录。我希望他们将其转换为单行,然后加载到 Hive 表。
上述数据应转换如下。
final_date|Notes|Status
04/17/2019|"- OB Team - Number of Attempt(s): 1 Outcome:other Order (RMO):0 Campaign : ABC Additional Notes: not a working number * If any call return to transfer to OB team *"|Complete
04/18/2019|"- OB Team - Number of Attempt(s): 3 Outcome: NO ANSWER Order (RMO): 0 Campaign Name: ABC *If return call, transfer to OB team* - OB TEAM - Number of Attempt(s): 1 Outcome: VM Order (RMO): 0 Campaign Name: ABC Additional Notes: None *If return call, transfer to OB team*"|Complete
有人可以帮我解决这个问题。
解决方案
根据当前行中双引号的数量处理输出记录分隔符。
awk -F\" 'BEGIN{ors=ORS} NF&&!(NF%2){ORS=(ORS!=ors)?ors:OFS} 1' file
推荐阅读
- python - 如何仅打印文件中的匹配行?
- macos - 为 github 生成 SSH 密钥:“zsh: command not found: $”
- python - 如何用另一列的特定类别的平均值填充列的缺失值?
- sql-server - 使用存储过程更新字段,其中字段的值包含多个 ' '
- r - 是否有 R 函数来查找从 Beta 分布创建某些数据的概率?
- neo4j - 按累积关系属性过滤的性能
- php - in_array 值是唯一值。如何?
- c++ - 我正在尝试计算世纪之日,但在 unix 中出现此错误:
- java - 如何将 2 个不同的项目放在一个 APK 中
- javascript - 使用通用(动态)代码在悬停列的其他行上显示/隐藏行?