linux - 使用 sed 时日期文件之间的转义分隔符
问题描述
我正在尝试|
在包含日期、空值、带管道分隔符的字符串的文本上使用 sed 删除引号中的分隔符。我使用了以下 sed 它的工作正常,但它删除了日期之间的分隔符。任何帮助将不胜感激。
sed -E 's/(^|[^"|])\|($|[^"|])/\1 \2/g' <file>
输入:
"Southern|Palms"|"AA|None"|"4"|"Ken|Coast"|1/11/2019 00:00:00|30/4/2020 00:00:00|"TH"|
回报:
"Southern Palms"|"AA None"|"4"|"Ken Coast"|1/11/2019 00:00:00 30/4/2020 00:00:00|"TH"|
预期输出:
"Southern Palms"|"AA None"|"4"|"Ken Coast"|1/11/2019 00:00:00|30/4/2020 00:00:00|"TH"|
解决方案
使用 GNU awk 进行 FPAT:
$ awk -v FPAT='[^|]*|"[^"]+"' -v OFS='|' '{for (i=1;i<=NF;i++) gsub(/\|+/," ",$i)} 1' file
"Southern Palms"|"AA None"|"4"|"Ken Coast"|1/11/2019 00:00:00|30/4/2020 00:00:00|"TH"|
推荐阅读
- python - 计算一行中的单词组(计算某些标题超过一个单词的列)
- botframework - 机器人有没有办法知道用户连接的是哪个频道?
- sql-server - 当所有输入都正确时,Powershell Restore-SQLDatabase 不起作用
- r - 如何评估对 match.call() 的调用?
- javascript - 发出 JavaScript (JS) 使用循环从 firebase 检索数据
- sql - 基于与 CTE 连接的更新列值
- python - 替换文本中的空格(多行)
- asp.net - 允许 nuget 下载 Azure AppService 中缺少的包
- c# - 了解 Parallel.For 循环和局部变量
- ansible - 嵌套的 jinja2 dns 查询