`

ruby用一行代码实现linux命令

    博客分类:
  • Ruby
阅读更多
一、linux的grep:
ruby -ne 'puts $_ if $_ =~ /foo/' /usr/share/dic/words

-n 选项相当于在-e指定的代码外边包上一层 while gets ... end
$_表示当前行
在多个文件搜索:
ruby -ne 'puts $_ if $_ =~ /foo/' /user/share/dic/*

如果你想显示匹配的行,文件,以及行号,可以这么做:
ruby -ne 'printf("%s\tin file:%s\tline %d\n",$_.strip,$<.filename,$.) if $_ =~ /foo/' /user/share/dic/*

二、find命令:
shell命令:
find . -type f -exec test -s {}/..data/log \; -print

ruby:
ruby -e 'Dir["**/**"].each{|f| p f if File.ftype(f) == "file" and File.size("#{f}/..data/log") > 0 }'

三、sed命令:
1、处理注释:
所有代码注释掉:
ruby -pe '$_ = "#" + $_' test.rb

这个只会在命令行输入,我们想覆盖原来的文件,我们可以用shell的重定向来实现:
ruby -pe '$_ = "#" + $_' test.rb > test.rb

但是这个不适合处理多个文件,ruby有一个选项可以做这个事情,就是-i选项:
ruby -i -pe '$_ = "#" + $_' test.rb

如果我们还想同时备份原文件,那么可以这么做:
ruby -i.bak -pe '$_ = "#" + $_' test.rb

这样原来的文件会备份为test.rb.bak
我们想把文件中所有注释行都去掉:
ruby -i.bak -ne 'puts $_ unless $_ =~/^#/' *.rb

2、使用行号:
我们想给每一行加上行号:
ruby -i.bak -ne 'puts $_ = $. + ": " + $_' file1

这样一个记录:
zhangsan  12  175
lisi  22  178
每行字段以tab键分割。
把每一行的放到一个文件中:
ruby -ne 'open("/tmp/test/user_#{$.}","w"){|f| f.puts $_}' user_info

四、awk的功能:
我们想对上面的程序每个字段一行存放,我们可以使用-a自动分割选项:
ruby -a -ne 'open('/tmp/test/user_#{$.}","w"){|f| f.puts $F }' user_info

同样是上面的记录,但是以,分割
我们想交换第一和第二字段:
ruby -a -F, -i -ne 'puts $F.values_at(1,0,2).join("\t") user_info

可以使用-F指定分割
五、ls功能:
在当前目录下列出所有大小大于1k的所有c语言源文件,并按照修改时间排序:
ruby -e 'puts Dir["*.c"].find{|f| File.size(f) > 1024}.sort{|f1,f2| File.mtime(f1) <=> File.mtime(f2)}'

可以使用Array的sort_by来做:
ruby -e 'puts Dir["*.c"].find{|f| Fle.size(f) > 1024}.sort_by{|f| File.mtime(f)}'

分享到:
评论

相关推荐

    ruby1.8.7版for linux

    Ruby 1.8.7是Ruby编程语言的一个旧版本,主要针对Linux操作系统。这个版本在当时发布时具有很多重要的功能和改进,对于某些特定的项目或者开发者来说,可能仍然是必要的选择。下面我们将深入探讨Ruby 1.8.7在Linux...

    linux版 ruby-2.3.0

    Ruby是一种面向对象、动态类型的编程语言,由日本的松本行弘在1995年设计并开发。它强调简洁、优雅的语法,注重程序员的生产力,并提供了丰富的库和工具支持。Ruby-2.3.0是Ruby的一个版本,发布于2016年,带来了许多...

    ruby programming

    Ruby是一种面向对象的、动态类型的脚本语言,由日本软件工程师松本行弘(Yukihiro Matsumoto)于1995年设计并开发。Ruby的设计理念是使编程变得简单、有趣且高效。它结合了Perl、Smalltalk、Eiffel、Ada和Lisp等语言...

    无涯教程(LearnFk)-Ruby教程完整离线版.pdf

    Ruby是一种面向对象、命令式、函数式、动态的通用编程语言,由日本计算机科学家松本行弘(Yukihiro "Matz" Matsumoto)在20世纪90年代中期开发。Ruby语言的灵感来源于Perl、Smalltalk、Eiffel、Ada和Lisp等语言,它...

    Ruby教程 脚本语言

    Ruby是一种高效且灵活的面向对象编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年创建,旨在提供一种易于理解、简洁且强类型的编程体验。它的设计理念是结合Smalltalk的面向对象特性、Perl的文本处理能力...

    Ruby-gitspelunk一个交互式git历史的工具

    Git的内置命令可以查看代码的历史,如`git log`显示提交历史,`git blame`追踪每一行代码的修改者。然而,对于大型项目,这些命令可能不足以提供直观的视图。这就是git-spelunk发挥作用的地方,它提供了一个友好的...

    ruby下载包

    Ruby是一种面向对象、动态类型的编程语言,由日本人松本行弘于1995年设计并开发。它强调代码的可读性和简洁性,通过优雅的语法,使得开发者能够更高效地编写程序。Ruby在Web开发领域尤其受欢迎,因为其与Rails框架的...

    RUBY完全自学手册

    Ruby是一种简单快捷、面向对象(使用类和实例)、脚本式的、解释型的、高级的通用编程语言。它由日本人松本行弘(Matz)于1995年设计并发布。Ruby的设计哲学是使编程变得更加简单高效,同时保持代码的可读性和简洁性...

    ruby-1.8.5.tar

    1. **源代码**:所有 Ruby 解释器的 C 语言源代码,包括核心库、标准库以及实现 Ruby 语法的解析器。 2. **文档**:可能包含 README 文件、INSTALL 文件和其他说明文档,指导用户如何编译和安装 Ruby。 3. **配置...

    ruby-1.8.4.tar.gz

    Ruby是一种面向对象的脚本语言,由日本人松本行弘(Yukihiro Matsumoto)在1995年创建。它的设计目标是简洁、优雅和易于阅读,同时提供了强大的元编程能力。Ruby-1.8.4是Ruby的一个较早版本,发布于2007年,它在当时...

    ruby-2.2.0.tar.gz

    要解压这个文件,用户通常会使用"tar -zxvf ruby-2.2.0.tar.gz"命令,这会创建一个名为ruby-2.2.0的目录,包含所有源代码文件。 Ruby 2.2.0的发布带来了许多性能改进和新特性。例如,引入了全新的Just-In-Time (JIT...

    ruby完全安装过程

    它由日本人松本行弘在1993年创建,旨在提高开发者的生产力和代码可读性。Ruby在Web开发领域尤其受欢迎,尤其是与Ruby on Rails框架结合使用时。 在开始Ruby的完全安装过程之前,你需要确保你的计算机满足以下基本...

    ruby-2.3.7.tar.gz

    在Linux上,你可以使用`tar`命令来解压这个文件,首先用`gunzip`或`zcat`解压,然后用`tar`提取文件内容。 Ruby 2.3.7是Ruby的一个稳定版本,发布于2017年,它包含了自2.3.0以来的一系列改进和修复。这个版本引入了...

    ruby初学者教程(对初学者很有帮助)

    默认情况下,方法的最后一行会被作为返回值。 ```ruby def add(x, y) x + y end ``` #### 八、模块 **8.1 名字空间** 模块可以作为命名空间来组织代码。 ```ruby module MyModule # 模块内的代码 end ``` **...

    ruby-2.4.5.tar.gz

    要安装和使用Ruby-2.4.5,你需要先使用`tar`命令解压文件,然后进入解压后的目录,并运行`./configure`脚本来配置编译环境,接着执行`make`进行编译,最后使用`sudo make install`将Ruby安装到系统路径。对于不同的...

    Ruby编程,实用程序员指南Programming Ruby, The Pragmatic Programmer's Guide

    Ruby是由日本软件工程师松本行弘(Yukihiro Matsumoto)于1995年设计并开发的一种面向对象的脚本语言。其设计哲学在于代码可读性更高,以及开发者效率的提升。Ruby的设计受到Perl、Smalltalk、Eiffel、Ada以及Lisp等...

    ruby-1.9.2-p290.tar.gz

    2. 解压:使用命令行工具(如Linux的tar或Windows的7-Zip)解压文件,通常会得到一个名为"ruby-1.9.2-p290"的目录。 3. 配置:进入解压后的目录,运行配置脚本来适应你的系统环境,例如设置安装路径和编译选项。 4. ...

Global site tag (gtag.js) - Google Analytics