Chinaunix

标题: 如何处理这个问题 [打印本页]

作者: wjw870907    时间: 2020-03-12 10:26
标题: 如何处理这个问题
cat file
name,811,aaa|bbb|ccc|ddd|eee|fff
support,812,
t_member,820,ccc|eee|fff
icac,821,
datax,822,aaa|ccc
exchange,823,bbb
jv,900,


变成
name,811,aaa
name,811,bbb
name,811,cc
name,811,ddd
name,811,eee

support,812,
t_member,820,ccc
t_member,820,eee
t_member,820,fff
icac,821,
datax,822,aaa
datax,822,ccc
exchange,823,bbb
jv,900,






作者: Looiml    时间: 2020-03-12 16:44
  1. sed -r ':a;s/^(.*,)([^|]+)\|(.*)$/\1\2\n\1\3/m;ta' a.txt
复制代码

name,811,aaa
name,811,bbb
name,811,ccc
name,811,ddd
name,811,eee
name,811,fff
support,812,
t_member,820,ccc
t_member,820,eee
t_member,820,fff
icac,821,
datax,822,aaa
datax,822,ccc
exchange,823,bbb
jv,900,

作者: wjw870907    时间: 2020-03-12 18:47
回复 2# Looiml

谢谢
作者: wh7211    时间: 2020-03-18 22:39
本帖最后由 wh7211 于 2020-03-18 22:48 编辑

回复 1# wjw870907


  1. cat 1
  2. name,811,aaa|bbb|ccc|ddd|eee|fff
  3. support,812,
  4. t_member,820,ccc|eee|fff
  5. icac,821,
  6. datax,822,aaa|ccc
  7. exchange,823,bbb
  8. jv,900,

  9. awk -F"," '$NF~/\|/{match($0,"^(.*,)[^,]+$",a);c=split($NF,b,"|");$0="";for(i=1;i<=c;i++){$0=$0?$0"\n"a[1]b[i]:a[1]b[i]}}1' 1
  10. name,811,aaa
  11. name,811,bbb
  12. name,811,ccc
  13. name,811,ddd
  14. name,811,eee
  15. name,811,fff
  16. support,812,
  17. t_member,820,ccc
  18. t_member,820,eee
  19. t_member,820,fff
  20. icac,821,
  21. datax,822,aaa
  22. datax,822,ccc
  23. exchange,823,bbb
  24. jv,900,
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2