免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2631 | 回复: 3
打印 上一主题 下一主题

[文本处理] 如何把两个相同行数的变量拼接成一个变量的2列? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-10-24 09:58 |显示全部楼层 |倒序浏览
$date、$uv两个变量都是采集于网页上面的
采集方法为curl -s "$url"  -b cookie_file|grep -Po '(?<={"CreateDate":").*?(?=","JumpOutCount)'
得到的数据是这样的:
echo "$date"
2016-10-01
2016-10-02
2016-10-03
2016-10-04
2016-10-05
2016-10-06
2016-10-07
2016-10-08
2016-10-09
2016-10-10
2016-10-11
2016-10-12
2016-10-13
2016-10-14
2016-10-15
2016-10-16
2016-10-17
2016-10-18
2016-10-19
2016-10-20
2016-10-21
2016-10-22
2016-10-23
另外一个变量是这样的:
echo "$uv"
9058
8356
7961
7834
8154
8691
9818
15191
14476
15200
14155
14052
14928
14222
9254
8609
16130
15564
15045
15135
14781
9510
8525

现在想要把$date和$uv拼接到同一个变量$all里面,变成:
2016/10/1        9058
2016/10/2        8356
2016/10/3        7961
2016/10/4        7834
2016/10/5        8154
2016/10/6        8691
2016/10/7        9818
2016/10/8        15191
2016/10/9        14476
2016/10/10        15200
2016/10/11        14155
2016/10/12        14052
2016/10/13        14928
2016/10/14        14222
2016/10/15        9254
2016/10/16        8609
2016/10/17        16130
2016/10/18        15564
2016/10/19        15045
2016/10/20        15135
2016/10/21        14781
2016/10/22        9510
2016/10/23        8525

如果不以制表符为分隔符,要指定一个奇葩的分隔符,比如"\\\",应该怎么办?
如果要拼接的变量不止2个,又要怎么办。。。

目前我自己的做法是把$date、$uv保存成文件,再用paste - d date uv >> all 这个命令保存成文件,再all=$(cat all)这样保存变量
但这种做法肯定很蠢,请老鸟赐教。。。


论坛徽章:
0
2 [报告]
发表于 2016-10-24 10:47 |显示全部楼层
moperyblue 发表于 2016-10-24 10:13
2016-10-01@9058
2016-10-02@8356
2016-10-03@7961

好奇怪啊,单条命令的确是可以执行,但是为啥打包到shell里面就报错呢?
ttt.sh: command substitution: line 16: syntax error near unexpected token `('
ttt.sh: command substitution: line 16: `paste -d':' <(echo "$date") <(echo "$uv")'



  1. #!/bin/bash
  2. date='2016-10-01
  3. 2016-10-02
  4. 2016-10-03
  5. 2016-10-04
  6. 2016-10-05
  7. 2016-10-06
  8. 2016-10-07'
  9. uv='9058
  10. 8356
  11. 7961
  12. 7834
  13. 8154
  14. 8691
  15. 9818'
  16. report=$(paste -d':' <(echo "$date") <(echo "$uv"))
  17. echo "${report}"
复制代码



论坛徽章:
0
3 [报告]
发表于 2016-10-24 11:24 |显示全部楼层

囧。。。。。。
这个我肯定知道啊。。。

论坛徽章:
0
4 [报告]
发表于 2016-10-24 11:31 |显示全部楼层

没有呀。。。chmod +x ttt.sh
./ttt.sh

sh ttt.sh
/bin/bash ttt.sh
source ttt.sh
都是报一样的错误
./ttt.sh: command substitution: line 16: syntax error near unexpected token `('
./ttt.sh: command substitution: line 16: `paste -d':' < (echo "$date") < (echo "$uv"))'


我就是想在脚本里面,把两个变量拼接成一个之后,用在下面的处理环节里面。。。

写入文件之后我再cat出来,其实能达到我要的目的,我就是觉得这样太蠢,shell这么强大,肯定有好的解决方法呀。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP