打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Winter实验室: 强大的Sed命令--背唐诗的Shell小程序

强大的Sed命令--背唐诗的Shell小程序


Sed命令是Unix/Linux平台上的行编辑工具,正确使用Sed命令可以达到你意想不到效果。

这里就有一个很有意思的例子,请看题:

现在有300多首唐诗放在一个文本文件中,格式是用"% 。。。%"分开,中间是一首唐诗,例如:%
%
《西施咏》
作者:王维
艳色天下重,西施宁久微。
朝为越溪女,暮作吴宫妃。
贱日岂殊众,贵来方悟稀。
邀人傅粉粉,不自著罗衣。
君宠益娇态,君怜无是非。
当时浣纱伴,莫得同车归。
持谢邻家子,效颦安可希。
%
《秋登兰山寄张五》
作者:孟浩然
北山白云里,隐者自怡悦。
相望始登高,心随雁飞灭。
愁因薄暮起,兴是清秋发。
时见归村人,沙行渡头歇。
天边树若荠,江畔洲如月。
何当载酒来,共醉重阳节。
%

现在要求每次运行程序,系统会随机选一首唐诗打印出来。要是你会如何做?
看看我这段脚本,总共才20来行:

#!/bin/sh

DATAFILE=/home/wende/bin/tang300.u8
IDXFILE=$DATAFILE.idx.txt
if [ ! -e $IDXFILE ] ;then
grep -n "%" $DATAFILE | awk -F‘:‘ ‘{print $1}‘ > $IDXFILE;
fi
LINECNT=`wc -l $IDXFILE|awk ‘{print $1}‘`;
FIRST=`expr $RANDOM % $LINECNT`
let SECOND=$FIRST+1;

CMD="sed -n -e ‘$FIRST p‘ $IDXFILE";
start=`eval $CMD`
CMD="sed -n -e ‘$SECOND p‘ $IDXFILE";
end=`eval $CMD`

let start=$start+1
let end=$end-1;
CMD="sed -n -e ‘$start,$end p‘ $DATAFILE";
eval $CMD

看明白了吗?其中使用了sed, awk, grep, eval, expr, wc, let 等命令。如果你对这些命令不了解,可以看看: 深入浅出Shell编程

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
shell命令删除换行符
使用sed和awk命令删除第一列
shell编程范例之字符串操作 - wuye_chinaunix
Shell中的grep、awk和sed的常用命令和语法
写给shell脚本初学者的话
一些常用linux命令列表
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服