Chinaunix

标题: 有没有将两个输出或者说变量上每列分别合在一起的方法 [打印本页]

作者: luciferneptune    时间: 2010-07-20 16:17
标题: 有没有将两个输出或者说变量上每列分别合在一起的方法
看了下论坛的帖子,都是将两个文本在列方向上合在一起的,用paste或者join命令的

我想知道有没有不用输出到文本就可以合在一起的

例如
var1="a
> b
> c
> d
> ........"
var2="A
> B
> C
> D
> ........"
通过命令方式将两个变量在列方向上合在一起,变为
"aA
> bB
> cC
> dD
> ......”
作者: sosodream    时间: 2010-07-20 16:42
这个合不合楼主需求:

]# awk '{a[FNR]=a[FNR]$0;}END{while(b++<FNR) print a[b];}' <(echo "a
b
c
d") <(echo "A
B
C
D")
aA
bB
cC
dD
作者: Shell_HAT    时间: 2010-07-20 16:50
  1. var1="a
  2. b
  3. c"
  4. var2="A
  5. B
  6. C"
  7. paste -d "" <(echo "$var1") <(echo "$var2")
复制代码

作者: expert1    时间: 2010-07-20 17:13
paste ,join
作者: luciferneptune    时间: 2010-07-22 09:10
Shell_HAT 发表于 2010-07-20 16:50



#paste -d"" <echo $a <echo $c
sh: echo: Cannot find or open the file.

HP-UX B.11.23

感觉我这个版本paste一定要使用file的
作者: Shell_HAT    时间: 2010-07-22 09:23
回复 5# luciferneptune


你手上有没有HP-UX 11.3?试试吧。
我这里的版本都比较低
作者: luciferneptune    时间: 2010-07-22 09:52
都是11.23的。。。
作者: wild_li    时间: 2010-07-22 10:13
合并用paste最简单明了了.
作者: luciferneptune    时间: 2010-07-22 10:50
合并用paste最简单明了了.
wild_li 发表于 2010-07-22 10:13



    看上去paste是简单,就是还要生成文件,这个就有点不爽
作者: luciferneptune    时间: 2010-07-22 13:33
这个合不合楼主需求:

]# awk '{a[FNR]=a[FNR]$0;}END{while(b++
sosodream 发表于 2010-07-20 16:42



这个好像也不行,也是报错:
A file or directory in the path name does not exist.
ksh: echo: 0403-016 Cannot find or open the file.
作者: luciferneptune    时间: 2010-07-23 08:55
自己顶
作者: sosodream    时间: 2010-07-23 14:07
我用的是bash呵,不过ksh也是支持的
应该是你没用对了

另外,上边几个人的方法也不错

[root@rac0 ~]# ksh
#  awk '{a[FNR]=a[FNR]$0;}END{while(b++<FNR) print a[b];}' <(echo "a
> b
> c
> d") <(echo "A
> B
> C
> D")

输出结果:
aA
bB
cC
dD
作者: luciferneptune    时间: 2010-07-23 15:50
我用的是bash呵,不过ksh也是支持的
应该是你没用对了

另外,上边几个人的方法也不错

[root@rac0 ~] ...
sosodream 发表于 2010-07-23 14:07



    你这样的方法我肯定不行,感觉我的shell不支持<(echo ....)的
作者: blackold    时间: 2010-07-23 15:54
与shell有关
作者: Shell_HAT    时间: 2010-07-25 22:30
回复 12# sosodream


不是没用对,是楼主的HP-UX确实不支持那种的写法。
作者: ly5066113    时间: 2010-07-26 12:08
try:
  1. $ var1='a
  2. > b
  3. > c
  4. > d'
  5. $ var2='A
  6. > B
  7. > C
  8. > D'
  9. $ export var2
  10. $ echo "$var1" | awk '{"echo \042$var2\042"|getline var2;print $1""var2}'
  11. aA
  12. bB
  13. cC
  14. dD
复制代码

作者: Shell_HAT    时间: 2010-07-26 12:42
Tim哥的方法可行,学习了。
作者: ly5066113    时间: 2010-07-26 17:10
回复 17# Shell_HAT


叫 Tim 好了,哥不敢当啊。论坛就是大家相互学习的。
现在想来,还是“黑哥”聪明,起名字的时候就带个“哥”字,比谁都高一辈。

作者: luciferneptune    时间: 2010-07-28 09:43
回复  Shell_HAT


叫 Tim 好了,哥不敢当啊。论坛就是大家相互学习的。
现在想来,还是“黑哥”聪明, ...
ly5066113 发表于 2010-07-26 17:10



    不二哥我还是很佩服的
作者: luciferneptune    时间: 2010-07-28 10:17
本帖最后由 luciferneptune 于 2010-07-28 10:29 编辑

呵呵




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