linux - 或 Sed 中的条件
问题描述
我正在检查两个 sed 条件,试图添加一个 sed 命令,但它不起作用。
输入:
"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"|
试图从双引号字段中删除分隔符 (|
或)。\
sed -E 's/(^|[^"|])\|($|[^"|]) | (^|[^"|])\\($|[^"|]) /\1 \2/g'
|
我还尝试了使用分隔符或 \
条件的以下方式:
sed -E 's/(^|[^"|])\|\\($|[^"|])/\1 \2/g'
解决方案
试试这个 awk 单行代码:
awk -F'"' -v OFS='"' '{for(i=2;i<=NF;i+=2)gsub(/[/|]/," ",$i)}7' file
注意:此解决方案假定您的所有报价都是配对的。
用我的傻瓜测试:
kent$ cat f
"Southern/Palms"|"AA|None"|"4"|"Ken|Coast"|1/11/2019 00:00:00|30/4/2020 00:00:00|"TH"|
kent$ awk -F'"' -v OFS='"' '{for(i=2;i<=NF;i+=2)gsub(/[/|]/," ",$i)}7' f
"Southern Palms"|"AA None"|"4"|"Ken Coast"|1/11/2019 00:00:00|30/4/2020 00:00:00|"TH"|
推荐阅读
- python - Python - 如何使用 websocket-client 发送心跳?
- android - 我无法为 AMD 处理器安装 Android Emulator Hypervisor Driver
- algorithm - 堆排序策略:基于选择还是交换?
- r - h2o GLM R 色散参数
- python - Statsmodels AutoRegression 回测代码有效性
- django - 如何过滤指向自身的外键
- python - 当数据有点混乱时使用 datetime.strptime :额外的空格,一月或一月
- javascript - 使用 Jquery 更改 HTML 表格背景
- r - ggplot boxplot - 无法让我的情节工作,没有绘制“盒子”
- android - Flutter syncfusion_flutter_calendar如何获取特定日期的约会列表