shell求简单分列合并解法,高手给看看!多谢!

发布于 2022-10-15 09:25:06 字数 195 浏览 23 评论 0

求简单shell分列合并解法,多谢!
数据:
stra b
stra c
stra d
strb 1
strb 2
strb 3

希望结果:
stra
b
c
d
strb
1
2
3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

倚栏听风 2022-10-22 09:25:06

awk '{print a[$1]?$2:a[$1]=$1RS$2}' file

一刻暧昧 2022-10-22 09:25:06

回复 1# spouter

  1. echo "stra b
  2. stra c
  3. stra d
  4. strb 1
  5. strb 2
  6. strb 3" |awk '{print $1==v?$2:$1"\n"$2;v=$1}'
  7. stra
  8. b
  9. c
  10. d
  11. strb
  12. 1
  13. 2
  14. 3

复制代码

故笙诉离歌 2022-10-22 09:25:06
  1. cat urfile1 | tr ' ' '\n'
  2. stra
  3. b
  4. stra
  5. c
  6. stra
  7. d
  8. strb
  9. 1
  10. strb
  11. 2
  12. strb
  13. 3

复制代码

愁以何悠 2022-10-22 09:25:06
  1. echo "stra b
  2. stra c
  3. stra d
  4. strb 1
  5. strb 2
  6. strb 3" |
  7. sed -n -r '
  8. 1h
  9. {
  10.      1!H
  11.      x
  12.      s/([^ ]*)(.*)([^\n]*)\n\1 (.*)/\1\2 \3 \4/
  13.      h
  14. }
  15. ${
  16. s/ +/\n/g
  17. p
  18. }'
  19. stra
  20. b
  21. c
  22. d
  23. strb
  24. 1
  25. 2
  26. 3

复制代码

玩套路吗 2022-10-22 09:25:06
  1. # 前几天看到bash去重复的方法,用在这里似乎也可以
  2. #!/bin/bash
  3. $ s="\n"
  4. while read line1 line2
  5. do
  6.      if [ "$s" == "${s/ $line1}" ]; then
  7.      echo -e $line1"\n"$line2 && s="$s $line1"
  8.      else
  9.      echo $line2
  10.      fi
  11. done <file

复制代码stra
b
c
d
strb
1
2
3

我的鱼塘能养鲲 2022-10-22 09:25:06

回复 1# spouter

awk -f str.awk filename

str.awk:

BEGIN { FS = " " }
{ if ( NR ==1 || NR == 4)
print $1,"\n",$2
else
  print "",$2
}

filename=要处理的内容。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文