我想要一个名为lines.sh的脚本,我可以将数据传输到该脚本以选择一系列行。例如,如果我有以下文件:测试.txtabcd然后我可以运行:cattest.txt|lines2,4它会输出bd我正在使用zsh,但如果可能的话我更喜欢bash解决方案。 最佳答案 你可以使用这个awk:awk-vs='2,4''BEGIN{split(s,a,",");for(iina)b[a[i]]}NRinb'filetwofour通过一个单独的脚本lines.sh:#!/bin/bashawk-vs="$1"'BEGIN{split(s,a,","
所以bash的内置时间函数应该以这种格式输出real0m0.002suser0m0.001ssys0m0.000s我想以毫秒为单位节省用户时间,比如001什么是干净的方法来做到这一点? 最佳答案 干净的方法是使用TIMEFORMATshell变量来只打印用户信息。(manbash了解更多详情。)然后,您当然需要捕获它的输出。这是不可能通过管道完成的,因为它是由shell在内部完成的,但是您可以在子shell中运行它,输出将转到标准错误。但是你必须以某种方式将命令的输出重定向到别处。在这里,我只是放弃它,但存在许多其他可能性,具体取决
这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:RemovecarriagereturninUnix我正在读取外部第三方生成的一些数据。我注意到文件中的ASCII文本散布着^M字符,我认为这是ASCII中的字符13,代表没有换行的回车。有没有一种方法可以用来从文件中去除^M字符?我在Linux(Ubuntu)上运行。
我是正则表达式的新手,我已经能够通过反复试验编写一些正则表达式,因此尝试了一些程序来帮助我编写表达式,但这些程序比正则表达式本身更难理解。有什么推荐的节目吗?我的大部分编程都是在Linux下进行的。 最佳答案 尝试YAPE::Regex::Explain对于Perl:#!/usr/bin/perlusestrict;usewarnings;useYAPE::Regex::Explain;printYAPE::Regex::Explain->new(qr/^\A\w{2,5}0{2}\S\n?\z/i)->explain;输出:The
我正在尝试找出如何从由\n\n分隔的多行记录中提取特定字段。在这种情况下,它恰好是从类似于DEBIAN控制文件的apt-cache输出的。查看apt-cacheshow"$package"的输出Package:caffeinePriority:optionalSection:miscInstalled-Size:641Maintainer:ReubenThomasArchitecture:allVersion:2.8.3Depends:python3:any(>=3.3.2-2~),python3,gir1.2-gtk-3.0,gir1.2-appindicator3-0.1,pyth
如何从Linux命令行中grep文件中以双正斜杠开头的行?双正斜杠前面可以有空格,但前面只有空格,没有其他类型的字符。例如shell_prompt:lsshell_prompt:grep.....?file_name对不起,我没注意,我没有注意到//除了空格之外的字符之前存在的东西。问题解决了。将奖励给第一个回答的人。 最佳答案 使用正则表达式:grep-E'^*//' 关于regex-如何在Linux命令行中grep以双正斜杠开头的行?,我们在StackOverflow上找到一个类似的
我有以下任务:歌曲的歌词在名为stairway.txt的文件中。此命令后将打印出以下哪一行:grep-E'(^.{4})(.{2}).*[]\2'stairway.txt(a)Yes,therearetwopathsyoucangobybutinthelongrun(b)ItsjustaspringcleanfortheMayqueen.(c)Don'tbealarmednow.(d)Ifthere'sabustleinyourhedgerow.(e)Theresstilltimetochangetheroadyou'reon.不明白最后的\2是什么意思?
如何使用grep删除单词的开头?例如,我有一个包含以下内容的文件:www.abc.com我只需要这部分:abc.com抱歉这个基本问题,但我没有使用Linux的经验。 最佳答案 您不能在Unixshell中使用grep编辑字符串,grep通常用于查找或删除文本中的某些行。您宁愿使用sed代替:$echowww.example.com|sed's/^[^\.]\+\.//'example.com你需要学习正则表达式touseiteffectively.sed也可以就地编辑文件(修改文件),如果你传递-i参数,但要小心,如果你写错了se
我正在尝试清理一些数据,最终我想将其放入CSV格式。我已经使用了一些正则表达式来清理它,但我卡在了一步上。我想用逗号替换除每隔三个换行符(\n)之外的所有内容。数据如下所示:field1field2field3field1field2field3等..我需要它field1,field2,field3field1,field2,field3谁有使用sed或awk的简单方法?我可以编写一个程序并使用带有模数计数器的循环来删除第一个和第二个换行符,但如果可能的话我宁愿从命令行执行此操作。 最佳答案 使用awk:awk'{n2=n1;n1=
要查找当前文件夹中包含“foo”的所有文件,我使用:grep-r"foo".要查找当前文件夹中包含“bar”的所有文件,我使用:grep-r"bar".但是如何找到所有不包含'foo'和'bar'的文件呢? 最佳答案 要打印不包含某些字符串的行,您可以使用-v标志:grep-r-v"bar".|grep-v"foo"这会为您提供所有不包含foo或bar的行。要打印不包含某些字符串的文件,您可以使用-L标志。要不匹配多个字符串,您可以使用带有-P标志的正则表达式(您可以使用多个正则表达式标志):grep-r-L-P"(foo|bar)