LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: big_awaya

练习:如何把一个文件倒着读出来?

[复制链接]
 楼主| 发表于 2003-3-17 18:06:28 | 显示全部楼层
我有点思路,看看如何:)

先把每行都取出,单行变成一个临时文件:
RAW1
RAW2


RAWn

然后,每个文件每个字符后加换行符号;

然后对每个文件做TAC,重定向到另一个文件;

然后去掉最后一行前的所有换行符;

再把这些文件拼接起来。


555,感觉很笨啊,但相信应该行。这几天手头没LINUX机器。

大家试试?也许根本没这么复杂:)
 楼主| 发表于 2003-3-17 18:07:57 | 显示全部楼层
哈哈,楼上竟燃在我写帖时就有了,先顶,再看。。。。
 楼主| 发表于 2003-3-17 18:09:10 | 显示全部楼层
恩。 G命令和h命令很厉害。该可以了:)
发表于 2003-3-17 18:35:28 | 显示全部楼层
呵~~真厉害兄弟!I服了idkey;)
发表于 2004-5-18 18:08:46 | 显示全部楼层
最初由 big_awaya 发表
TAC命令还是要变一变的好。

它标准是“最后一行”先读出,但行内字符还是正序的,我要求的是如“ABCDEFG”要读出“GFEDCBA”,嘿嘿

$ tac /your/file | rev
发表于 2004-5-18 19:00:52 | 显示全部楼层
tac file | awk 'BEGIN{FS=""}{for(i=NF;i>=1;i--)printf $i}END{printf "\n"}'
发表于 2004-5-19 08:22:32 | 显示全部楼层
一些简单的命令复合,也可以阿:
cat -sbn file | sort -brn | rev
整篇倒序,每行倒序.
还有就是Unix上没有tac.
发表于 2004-5-19 12:06:47 | 显示全部楼层
最初由 big_awaya 发表
TAC命令还是要变一变的好。

它标准是“最后一行”先读出,但行内字符还是正序的,我要求的是如“ABCDEFG”要读出“GFEDCBA”,嘿嘿


这样的任务用 perl 最好啦。先把行中的每个字符变成单独的一行,然后再用 tac 呀。下面是不太完美的一个版本。:p

echo "abcdef" | perl -p -e 's/(.)/$1\n/sg' | tac | perl -p -e 's/\n//'
发表于 2004-5-19 19:28:36 | 显示全部楼层
我是个菜鸟,对各位大侠说的一知半解,我想知道研究这个可以有什么应用意义吗?!
发表于 2004-5-19 21:27:40 | 显示全部楼层
最初由 无忌孤飞 发表
我是个菜鸟,对各位大侠说的一知半解,我想知道研究这个可以有什么应用意义吗?!

呵呵,这只能算是shell的基本功吧~
因为这里面包括了很多命令的使用方法~,在实际运用中,是离不开这些命令的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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