LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: KornLee

考考你:如何横排变竖排?

[复制链接]
发表于 2004-11-22 16:05:32 | 显示全部楼层
一种新思路
1. 反转文件后,按行拆分成N个文件
2. 每个拆分后的文件(各含有一行文字) 按字分行
3. paste 所有文件

#!/bin/bash

infile="$1"
outfile="$2"
tempdir=`mktemp -d`
cd $tempdir
tac ${OLDPWD}/$infile | split -l 1
cd -
sed -i 's/./&\n/g' $tempdir/*
paste -d '' $tempdir/* > $outfile
rm -rf "$tempdir
发表于 2005-4-29 17:58:15 | 显示全部楼层
楼上的方法很有趣
回复 支持 反对

使用道具 举报

发表于 2005-4-30 00:56:39 | 显示全部楼层
都************是高手!
回复 支持 反对

使用道具 举报

发表于 2007-12-23 12:47:32 | 显示全部楼层
  1. awk 'BEGIN{FS=""}
  2. {
  3. maxNF=(maxNF<NF)?NF:maxNF;
  4. for(i=1;i<=NF;i++) Filds[i,NR]=$i;
  5. }
  6. END{
  7. for(i=1;i<=maxNF;i++){
  8.         for(j=1;j<=NR;j++) printf "%-2s",Filds[i,j];
  9.         print "";
  10.   }
  11. }'  诗文
复制代码

思路:
用数组来保存诗文
用FS="" 来把每个字符都分隔成一个字段(awk可以很好地处理中文,因此,一个汉字被当作是一个字符)
打印的时候要用printf,来以固定宽度的方式显示,否则有错乱
回复 支持 反对

使用道具 举报

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

本版积分规则

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