问一个简单shell问题,将grep的输出赋值给一个变量

用grep命令得到的输出赋值给一个变量不成功。



grep命令如下:

代码:
$ grep -c '^abc' file.txt

输出为22,表示file.txt中以abc开头的行的数目。



现在将输出赋值给一个变量:

代码:
myvar=`grep -c '^abc' file.txt`

得到的$myvar值为0,貌似是将命令的返回状态值付给了变量,而不是命令的输出内容。

但是用myvar=`pwd`是没有问题的,输出付给了变量。是不是grep命令有特别注意的地方?谢谢。

 
昵称: michaelyung  时间: 2009-06-26 16:32:00

好象没有问题:

(a=`grep -c ' mysql' /dev/shm/l`; echo $a)

21

 
昵称: openfree  时间: 2009-06-26 20:39:00

引用:
作者: openfree
好象没有问题:

(a=`grep -c ' mysql' /dev/shm/l`; echo $a)

21

刚试了一下,直接匹配没有问题。

用了正则表达的时候就会有这问题,比如

加了-E选项也一样,$a输出为0.



附上我的例子,有一个tex文件,内含有:

代码:
.....
\bibitem
.....

用以下的命令:

代码:
$ a=`grep -c '^\\bibitem' file.tex`; echo $a

输出为0。

直接执行 grep -c '^\\bibitem' file.tex 输出为正常值。

可能是正则表达和转义哪块有问题。

谢谢。

 
昵称: michaelyung  时间: 2009-06-27 01:41:00

知道问题在哪了。赋值时,正则表达里的转义符两个backslash都需要转义。所以应该是:

代码:
a=`grep -c '^\\\\bibitem' paper.tex`;echo $a

愚蠢的错误。

多谢大家。

引用:
作者: michaelyung
刚试了一下,直接匹配没有问题。

用了正则表达的时候就会有这问题,比如

加了-E选项也一样,$a输出为0.



附上我的例子,有一个tex文件,内含有:

代码:
.....
\bibitem
.....

用以下的命令:

代码:
$ a=`grep -c '^\\bibitem' file.tex`; echo $a

输出为0。

直接执行 grep -c '^\\bibitem' file.tex 输出为正常值。

可能是正则表达和转义哪块有问题。

谢谢。

 

grep查询文本:问一个简单shell问题,将grep的输出赋值给一个变量的更多相关文章

  1. 查看当前支持的shell,echo -e相关转义符,一个简单shell脚本,dos2unix命令把windows格式转为Linux格式

    /etc/shells [root@localhost ~]# more /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bi ...

  2. 如何利用JUnit开展一个简单的单元测试(测试控制台输出是否正确)

    待测类(CreateString)如下: public class CreateString { public void createString() { //Output the following ...

  3. [shell编程]一个简单的脚本

    首先,为什么要学习shell呢?哈哈,当然不是shell能够怎样怎样然后100字. 最近看到一篇博文<开阔自己的视野,勇敢的接触新知识>,读完反思良久.常常感慨自己所会不多,对新知识又有畏 ...

  4. Bert文本分类实践(一):实现一个简单的分类模型

    写在前面 文本分类是nlp中一个非常重要的任务,也是非常适合入坑nlp的第一个完整项目.虽然文本分类看似简单,但里面的门道好多好多,作者水平有限,只能将平时用到的方法和trick在此做个记录和分享,希 ...

  5. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  6. perl 引用(数组和hash引用) --- perlreftut - Mark 的一个简单的'引用'教程 ---Understand References Today. --Mark Jason Dominus, Plover Systems (mjd-perl-ref+@plover.com)

    https://blog.csdn.net/fangwei1235/article/details/8570886 首页 博客 学院 下载 论坛 APP 问答 商城 活动 VIP会员 招聘 ITeye ...

  7. linux设备驱动第三篇:写一个简单的字符设备驱动

          在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分 ...

  8. 编写一个简单的C++程序

    编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

  9. 一个简单的JUnit项目

    本人一直很喜欢JAVA,可是真正接触到JUnit也不过半年.由于公司进行网页测试,采用的是 JUnit+selenium的方式搭建的测试框架,然后采用JAVA语言编写,所以本人也好好研究了一下JUni ...

随机推荐

  1. asp.net用户自定义控件传参

    asp.net自定义控件传参的方式有2中: ①字段的方式 在自定义控件的.ascx.cs中定义一个字段,然后在调用页面的page_load方法里面传入参数. 如  在自定义控件中设置字段   publ ...

  2. php 二维数组排序

    usort($info ,function($a,$b){ $a1 = $a['score']; $b1 = $b['score']; if($a1 == $b1) return 0; return ...

  3. 定位 position: absolute & relative

    [position:absolute] 意思是绝对定位,他默认参照浏览器的左上角,配合TOP.RIGHT.BOTTOM.LEFT(下面简称TRBL)进行定位,有以下属性: 1)如果没有TRBL,以父级 ...

  4. iOS:iOS中的多控制器管理

    iOS中的控制器有三种创建方式: 1.通过storyboard创建 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@" ...

  5. Redis常用命令入门4:集合类型

    集合类型 之前我们已经介绍过了最基本的字符串类型.散列类型.列表类型,下面我们一起学习一下集合类型. 集合类型也是体现redis一个比较高价值的一个类型了.因为Redis的集合类型,所以我们可以很容易 ...

  6. 安装 node-sass 的正确姿势

    SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass

  7. Linux 下使用Visual Studio Code

    1.下载:https://az764295.vo.msecnd.net/stable/db71ac615ddf9f33b133ff2536f5d33a77d4774e/VSCode-linux-x64 ...

  8. 数据中心第三方服务、金融IT外包服务、社保医疗信息化解决方案,这三类业务是什么关系,区别在哪?

    这个话题很大,牵扯很多,试着回答一下,算是胡扯了. 三类业务的关系,都是IT外包,至于外包的内容很杂.DC的外包,多半是基建和建维,一般不牵扯到软件开发,网站建设类的.金融IT外包就复杂多了,信息系统 ...

  9. HashBytes(Transact-SQL)

    返回其输入的MD2.MD4.MD5.SHA或SHA1哈希值 语法 HashBytes('<algorithm>',{@input|'input'}) <algorithm>:: ...

  10. (BFS)aoj0558-Cheese

    题目地址 根据题意,必须按从1吃到n的顺序.建立vi数组记录去没去过某一点,从起点向四周搜索,合法且未去过就入队列.每当找到符合此时应吃的位置,就将这个位置改为'.'并刷新vi数组,清空队列(因为必须 ...