Tag: grep

Linux shell脚本将前导零添加到文件名

我有一个约1700个文件的文件夹。 他们都被命名为1.txt或1497.txt等,我想重新命名所有的文件,所有的文件名是四位数字。 即, 23.txt变成0023.txt 。 什么是一个shell脚本会做到这一点? 或者一个相关的问题:我如何使用grep来匹配包含\d.txt (即一个数字,然后是句点,然后是字母txt )? 以下是我到目前为止: for a in [command i need help with] do mv $a 000$a done 基本上,运行三次,用命令find一个数字,两个数字和三个数字的文件名(初始零的数量改变)。

ack未命中结果(vs grep)

我确定我误解了ack的文件/目录,忽略了默认值,但是也许有人可以为我说明一下: mbuck$ grep logout -R app/views/ Binary file app/views/shared/._header.html.erb.bak.swp matches Binary file app/views/shared/._header.html.erb.swp matches app/views/shared/_header.html.erb.bak: <%= link_to logout_text, logout_path, { :title => logout_text, :class => 'login-menuitem' } %> mbuck$ ack logout app/views/ mbuck$ 而… mbuck$ ack -u logout app/views/ Binary file app/views/shared/._header.html.erb.bak.swp matches Binary file app/views/shared/._header.html.erb.swp matches app/views/shared/_header.html.erb.bak 98:<%= link_to logout_text, logout_path, { :title => […]

如何使用grep获取`name =`之后的任何内容?

我试图在name=后面加上grep,只包含空格和字母数字。 例如: name=some value here 我明白了 some value here 我在这是完全新鲜的,下面的grep匹配一切,包括name= 。 grep 'name=.*' filename 任何帮助深表感谢。

如何将多行输出连接到一行?

如果我运行命令cat file | grep pattern cat file | grep pattern ,我得到很多输出。 如何将所有的行连接成一行,用"\n"有效地replace每个"\n" "\" " (以"后跟空格"\" "结尾)? cat file | grep pattern | xargs sed s/\n/ /g cat file | grep pattern | xargs sed s/\n/ /g不适合我。

如何grep,排除一些模式?

我想find文件中有一些模式的发生和没有其他模式的行。 例如,我需要find包括loom在内的所有文件/行,除了那些gloom 。 所以,我可以用命令findloom : grep -n 'loom' ~/projects/**/trunk/src/**/*.@(h|cpp) 现在,我想searchloom除了gloom 。 但是,以下两个命令都失败了: grep -v 'gloom' -n 'loom' ~/projects/**/trunk/src/**/*.@(h|cpp) grep -n 'loom' -v 'gloom' ~/projects/**/trunk/src/**/*.@(h|cpp) 我应该怎么做才能达到我的目标? 编辑1:我的意思是loom和gloom是字符序列(不一定是单词)。 所以,我需要在命令输出中使用bloomberg ,而不需要ungloomy 。 编辑2:有我的期望的样本。 以下两行都在命令输出中: 我面对通过香的面纱而隐约可见的图标。 Arty在一个阴沉的日子里正在变冷 。 以下两行不在命令输出中: 这是阴郁的,可怕的 – 伟大的污泥。 在pyntit大厅的西南面

如何在grep中为新行添加模式?

如何在grep中为新行添加模式? 开始新行,结束新行。 不是正则expression式的方式。 像\ n。

Grep不是一个正则expression式

我需要search一个PHPvariables$someVar 。 但是,Grep认为我正在尝试运行一个正则expression式,并抱怨: $ grep -ir "Something Here" * | grep $someVar Usage: grep [OPTION]… PATTERN [FILE]… Try `grep –help' for more information. $ grep -ir "Something Here" * | grep "$someVar" <<Here it returns all rows with "someVar", not only those with "$someVar">> 我没有看到告诉grep 不要将string解释为正则expression式的选项,而是将$作为另一个string字符。

当input不匹配时,防止grep返回一个错误

我想在bash脚本中写一段代码来检查一个程序是否已经在运行。 我有以下为了search栏是否正在运行 foo=`ps -ef | grep bar | grep -v grep` 该 grep -v grep 部分是为了确保ps结果中不考虑“grep bar” 当酒吧没有运行,foo是正确的空。 但我的问题在于剧本的事实 set -e 如果某个命令返回一个错误,这是一个终止脚本的标志。 事实certificate,当bar没有运行时,“grep -v grep”与任何东西都不匹配,grep返回一个错误。 我尝试使用-q或-s,但无济于事。 有没有解决scheme? 谢谢

如何使用正则expression式或在Cygwin的grep?

我需要从一个文件返回两个不同匹配的结果。 grep "string1" my.file 正确地返回my.file中string1的单个实例 grep "string2" my.file 正确地返回my.file中string2的单个实例 但 grep "string1|string2" my.file 什么也不返回 在正则expression式testing应用程序的语法是正确的,那么为什么它不适用于cygwin中的grep?

使用“|”替代运算符进行刷新

以下是名为AT5G60410.gff的大文件的示例: Chr5 TAIR10 gene 24294890 24301147 . + . ID=AT5G60410;Note=protein_coding_gene;Name=AT5G60410 Chr5 TAIR10 mRNA 24294890 24301147 . + . ID=AT5G60410.1;Parent=AT5G60410;Name=AT5G60410.1;Index=1 Chr5 TAIR10 protein 24295226 24300671 . + . ID=AT5G60410.1-Protein;Name=AT5G60410.1;Derives_from=AT5G60410.1 Chr5 TAIR10 exon 24294890 24295035 . + . Parent=AT5G60410.1 Chr5 TAIR10 five_prime_UTR 24294890 24295035 . + . Parent=AT5G60410.1 Chr5 TAIR10 exon 24295134 24295249 . + . Parent=AT5G60410.1 […]