问一个简单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. mysql通用包安装

    mysql 版本: mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz 解压后的初始化: mysqld --defaults-file=/etc/my.cnf --us ...

  2. Guava----Function

    1. Function接口,提供两个方法: apply方法: 可以自定义自己想实现的功能 @Nullable T apply(@Nullable F input); 1. 实例: import com ...

  3. MVC中获取来自控制器名称与动作的方法

    #region 获取控制器名称与动作 protected void GetNameSpace() { var nameSpace = this.RouteData.Values["contr ...

  4. js 判断是什么类型浏览器

    //  firefoxif ( window.sidebar && "object" == typeof( window.sidebar ) && ...

  5. Windows Store App JavaScript 开发:获取文件和文件夹列表

    在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...

  6. FastReport 自定义数据集

    1.可以自定义一个新的数据源   参考: internal class VirtualDataSource : DataSourceBase {    private int FVirtualRows ...

  7. 开启LOH压缩?

    我们知道.NET CLR的GC堆中有一种特殊的堆,它专门存放超过85000byte的对象(详见这里),这就是大对象堆(LOH). 在.NET Framework 4.5.1之前,微软并没有提供对LOH ...

  8. Thymeleaf+SpringMVC,如何从模板中获取数据

    Thymeleaf+SpringMVC,如何从模板中获取数据 在一个典型的SpringMVC应用中,带@Controller注解的类负责准备数据模型Map的数据和选择一个视图进行渲染.这个模型Map对 ...

  9. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    文顶顶iOS开发博客链接整理及部分项目源代码下载   网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...

  10. javascript如何用户的判断操作系统

    <script> alert(window.navigator.userAgent); if(window.navigator.userAgent.indexOf("Window ...