当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 25 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 0:49 

注册: 2008-05-17 9:56
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
谢谢大侠帮忙!
现在需要编写一个shell脚本来实现一个功能,就是将一个文件里得“case”后面一行插入“//case n”并保存到原文件里

我是菜鸟,网上查了好久都没有答案啊。。。

请先看看,下面这个代码的循环哪里出错了,总是报错:
代码:
./project: line 9: ((: 1 < : 语法出错:此处需要运算符 (error token is "< ")

代码:
sed -i -e '/case (stato)/i\
//------------------------------------------------\n//Start of a state machine for (stato)\n// Case 1:' b01.v
str=`sed -n ":" b01.v`
let count=1
while(($count < $str))
do     
sed -i -e '/Case $count/i\
//Case $count+1' b01.v
$count=$count+1
done


最后由 wangjingchu 编辑于 2010-12-25 9:18,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 0:53 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
是不是这样?
代码:
sed -i -e '/case/a\
//case n' your_files


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 1:08 

注册: 2008-05-17 9:56
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
lilydjwg 写道:
是不是这样?
代码:
sed -i -e '/case/a\
//case n' your_files

高手啊~~~~谢谢啊
还有就是,如何连续循环得在有“:”的那行末尾插入 case n
那个n是从1开始,一直到文件里得“:”的数量的那个数
不知道用循环怎么写

举个例子,比如文中有8个冒号,就可以搜索出冒号得数量,然后用循环来实现连续向原文件里写
case 1
case 2
case 3
case 4
case 5
case 6
case 7
case 8

然后在带有冒号得那些行得末尾加上备注“//case1”
第二个冒号那行末尾加上“//case 2”
依次类推,谢谢拉 :em06


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 8:31 
头像

注册: 2006-10-25 18:08
帖子: 1582
送出感谢: 0 次
接收感谢: 0 次
给原始文件片段,然后给期望文件片段


_________________
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 9:13 

注册: 2008-05-17 9:56
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
trigger 写道:
给原始文件片段,然后给期望文件片段

代码:
  begin

    stato=a;

    outp<=0;

    overflw<=0;

  end

  else
    case (stato)

    a: begin

    if (line1 && line2) stato=f;

    else           stato=b;

    outp<=line1^line2;

    overflw<=0;

       end

    e: begin

    if (line1 && line2) stato=f;

    else           stato=b;

    outp<=line1^line2;

    overflw<=1;

       end

    b: begin

    if (line1 && line2) stato=g;

         else           stato=c;

    outp<=line1^line2;

    overflw<=0;

       end

    f: begin

    if (line1 || line2) stato=g;

         else           stato=c;

    outp<=~(line1^line2);

    overflw<=0;

       end

    c: begin

    if (line1 && line2) stato=wf1;

         else           stato=wf0;

    outp<=line1^line2;

    overflw<=0;

       end

    g: begin

    if (line1 || line2) stato=wf1;

         else           stato=wf0;

    outp<=~(line1^line2);

    overflw<=0;

       end


以上是要修改得文件,就是在 case (stato) 前插
代码:
//------------------------------------------------
//Start of a state machine for (stato)
// Case 1:
// Case 2
// Case n (last):   一共有n行,n就是带有冒号行的数量


并且在每一行的
对于每一个状态, 例如, S_RESET, 变换“ S_RESET: ”到“ S_RESET: //case 1”,这样你的代码就会像:
“ S_X: //case 2”
“ S_Y: //case 3”
“ S_Z: //case 4”

谢谢拉 :em06


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 10:02 
头像

注册: 2006-10-25 18:08
帖子: 1582
送出感谢: 0 次
接收感谢: 0 次
有人能看懂楼主在说什么吗?我看不懂。


_________________
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 10:26 

注册: 2008-05-17 9:56
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
trigger 写道:
有人能看懂楼主在说什么吗?我看不懂。

先看看这个循环吧,不知道哪里错了
代码:
str=`sed -n ':' b01.v`
echo $str
count=1
while[$count < $str]
do     
sed -i -e '/Case $count/i\
//Case $count+1' b01.v
let count=$count+1
done

总是报错,说
代码:
./project: line 14: while[1 -lt 9]:找不到命令
./project: line 15: 在未预料的“do”附近出现语法错误
./project: line 15: `do     '


谢谢拉 :em06


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 10:35 
头像

注册: 2006-10-25 18:08
帖子: 1582
送出感谢: 0 次
接收感谢: 0 次
循环用
for count in `seq $str`
do
...
done


_________________
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 10:42 

注册: 2008-05-17 9:56
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
trigger 写道:
循环用
for count in `seq $str`
do
...
done


我的这个取值是不是也不对啊,报错说seq缺少操作数
我这个sed是想从b01.v里找出:的个数,存在str里
代码:
str=`sed -n ':' b01.v`


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 10:54 
头像

注册: 2006-10-25 18:08
帖子: 1582
送出感谢: 0 次
接收感谢: 0 次
wangjingchu 写道:
trigger 写道:
循环用
for count in `seq $str`
do
...
done


我的这个取值是不是也不对啊,报错说seq缺少操作数
我这个sed是想从b01.v里找出:的个数,存在str里
代码:
str=`sed -n ':' b01.v`

str=`grep -c : b01.v`


_________________
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 11:09 

注册: 2008-05-17 9:56
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
trigger 写道:
wangjingchu 写道:
trigger 写道:
循环用
for count in `seq $str`
do
...
done


我的这个取值是不是也不对啊,报错说seq缺少操作数
我这个sed是想从b01.v里找出:的个数,存在str里
代码:
str=`sed -n ':' b01.v`

str=`grep -c : b01.v`

:em11 多谢拉~~
不过还有个问题请教哈
就是我想在打印出 //case 1:的基础上,通过你说的那个循环来控制接着在下面打印
//case 2:
//case 3:
一直到
//case n:
我的sed的正则表达是不是没有正确指到//case 1:啊
或者还是我的那个$count + 1有问题
代码:
for count in `seq $str`
do     
sed -i -e "/^ Case $count:/a\
//Case $count+1:" b01.v
count=$count+1
done


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 11:16 
头像

注册: 2006-10-25 18:08
帖子: 1582
送出感谢: 0 次
接收感谢: 0 次
你见过在for循环里面手动设置指针的?count已经迭代了,用不着那一行,删掉吧。
说实话,我根本没看懂你要干什么。


_________________
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 11:24 

注册: 2008-05-17 9:56
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
trigger 写道:
你见过在for循环里面手动设置指针的?count已经迭代了,用不着那一行,删掉吧。
说实话,我根本没看懂你要干什么。

就是说一个文件里已经有一行是
//Case 1:
我想再通过操作,在它后面插入
//Case 2:
//Case 3:
一直到
//Case n:
这个n是通过那个str得到的
帮我想想应该怎么循环啊……想不明白


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 11:55 
头像

注册: 2006-10-25 18:08
帖子: 1582
送出感谢: 0 次
接收感谢: 0 次
引用:
cat lines
Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000
//Case 1:
sdgsdgfdg
sdg


for i in `seq 10`;do let j=i+1;sed -i -e "s#//Case $i:#&\n//Case $j:#g" lines;done
引用:
cat lines
Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000
//Case 1:
//Case 2:
//Case 3:
//Case 4:
//Case 5:
//Case 6:
//Case 7:
//Case 8:
//Case 9:
//Case 10:
//Case 11:
sdgsdgfdg
sdg


_________________
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 急!在线等shell编程一个小小问题
帖子发表于 : 2010-12-25 12:18 

注册: 2008-05-17 9:56
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
trigger 写道:
引用:
cat lines
Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000
//Case 1:
sdgsdgfdg
sdg


for i in `seq 10`;do let j=i+1;sed -i -e "s#//Case $i:#&\n//Case $j:#g" lines;done
引用:
cat lines
Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000
//Case 1:
//Case 2:
//Case 3:
//Case 4:
//Case 5:
//Case 6:
//Case 7:
//Case 8:
//Case 9:
//Case 10:
//Case 11:
sdgsdgfdg
sdg

可以了~谢谢啊多多谢大神哈 :em05


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 25 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译