LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 837|回复: 6

下面的需求怎么实现 谢谢

[复制链接]
发表于 2005-9-16 21:23:41 | 显示全部楼层 |阅读模式
文本格式
1 3 5 7
a b c d

变成:
1  a
3  b
5  c
7  d

就是实现横排变垂着排
发表于 2005-9-16 23:16:46 | 显示全部楼层
有个笨点的办法:
先定义每个元素,作个循环读取数据并赋值
A11=`cat 1.txt |sed -n '1p' | awk -F" " '{print $1}'`
A12=`cat 1.txt |sed -n '1p' | awk -F" " '{print $2}'`
...
A21=`cat 1.txt |sed -n '2p' | awk -F" " '{print $1}'`
A22=`cat 1.txt |sed -n '2p' | awk -F" " '{print $2}'`

然后作个循环写文件
echo "$A11 $A21" >2.txt
echo "$A12 $A22" >>2.txt
...

或用数组也行
回复 支持 反对

使用道具 举报

发表于 2005-9-23 19:03:39 | 显示全部楼层
awk '
        { for(i=1;i<=NF;i++) a[i,NR]=$i;}
        END
             {for(i=1;i<=NF;i++) {
                   for(j=1;j<=NR;j++) {
                            printf("%s",a[i,j]);
                            if(j==NR) print "";
                   }
              }
          }' data
回复 支持 反对

使用道具 举报

发表于 2005-9-23 21:15:08 | 显示全部楼层
费劲死了
  1. lineno=$1
  2. for i in `seq $lineno`; do
  3.         read strings[$i]
  4. done
  5. line1=(${strings[1]})
  6. count=$((${#line1[@]} - 1))
  7. for i in `seq 0 $count`; do
  8.         for j in `seq $lineno`; do
  9.                 line=(${strings[$j]})
  10.                 echo -n "${line[$i]} "
  11.         done
  12.         echo
  13. done
复制代码

怎么改好?
回复 支持 反对

使用道具 举报

发表于 2005-9-26 01:59:24 | 显示全部楼层
等待解答<hr>
回复 支持 反对

使用道具 举报

发表于 2005-9-28 21:25:50 | 显示全部楼层
shell code:
itpos:/home/richard/shellcode# cat ch.txt
1 3 5 7
a b c d

itpos:/home/richard/shellcode# cat foo.sh
#!/bin/sh
a=(`cat ch.txt |sed 2d |tr -d "\n"`)
b=(`cat ch.txt |sed 1d |tr -d "\n"`)
for ((i=0; i<=3;i++))
do
echo "${a[$i]} ${b[$i]}"
done

itpos:/home/richard/shellcode# sh foo.sh
1 a
3 b
5 c
7 d
itpos:/home/richard/shellcode#
回复 支持 反对

使用道具 举报

发表于 2005-9-28 21:30:41 | 显示全部楼层
perl code:
itpos:/home/richard/shellcode# cat ch.txt
1 3 5 7
a b c d
itpos:/home/richard/shellcode# cat foo.pl
#!/usr/bin/perl
$a=`cat ch.txt |sed 2d`;
chomp $a;
$b=`cat ch.txt |sed 1d`;
chomp $b;
@aa=split(/ /,$a);
@bb=split(/ /,$b);

for ($i=0; $i<=3;) {
      print "$aa[$i]  $bb[$i]\n";
$i++;
}
itpos:/home/richard/shellcode# perl foo.pl
1  a
3  b
5  c
7  d
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表