我正在检查两个 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"|
关于linux - 或者 Sed 中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164080/