在shell脚本中优化grep(或使用AWK)

在我的shell脚本中,我尝试使用在$sourcefile中找到的术语反复搜索同一个$targetfile My$sourcefile的格式如下: pattern1 pattern2 etc... 我必须搜索的低效循环是: for line in $(< $sourcefile);do fgrep $line $targetfile | fgrep "RID" >> $outputfile done $(>$outputfile 完成 我知道可以通过将整个$tar

Shell脚本:按字母顺序获取文件夹中最后一个文件的名称

我有一个自动创建的MySQL数据库备份文件夹。它们的名称由备份的日期组成,如下所示: 2010-06-12_19-45-05.mysql.gz 2010-06-14_19-45-05.mysql.gz 2010-06-18_19-45-05.mysql.gz 2010-07-01_19-45-05.mysql.gz 获取列表中最后一个文件(即按字母顺序排在最后的文件)的文件名的方法是什么 在shell脚本中,我想做如下操作 LAST_BACKUP_FILE= ??? gunzip

这行shell脚本在做什么

这个问题可能很简单,但我找不到确切的答案 在shell脚本中,我有这样一行代码 export CFLAGS=" -w -Iinc/ -Isrc/" 我不知道-w和-I选项在这里做什么 我只知道这行包括目录inc和src 任何帮助都很好它们是编译器的参数。如果是gcc,则: -w:禁止所有警告消息 -I:将目录目录添加到要搜索头文件的目录列表中。在标准系统包含目录之前搜索以“-I”命名的目录。如果目录目录是标准系统包含目录,则忽略该选项以确保系统目录的默认搜索顺序和系统标题的特殊处理不会失败(

Shell 如何缩短此时间?:先阅读| |退出1;(回声“第一”猫)|$foo

其目的是在没有输入的情况下甚至不启动$foo 如果foo=“diff-xyz”,并且输入丢失或为空,则此选项非常有用。 否则,diff将输出所有“xyz”作为差值 最初的问题是“cat doesnotexist | diff-exists”输出“exists”(前缀为“>”)的内容,而我希望整个管道失败。 我目前的解决办法是: cat doesnotexist | (read first|| exit 1; (echo "$first"; cat) | diff - exists) ,但我想要

shell脚本中`$[`的用途是什么?

为了寻找一种简单的随机数生成方法,我遇到了一个使用follow-snip代码的方法 echo $[ ( $RANDOM % $DIE_SIDES ) + 1 ] $[]的用途是什么。谷歌搜索并没有透露我想要的答案。谢谢这个构造用于算术;例如,$[1+1]返回2。你也可以说$expression或expr 1+1。expr命令版本是老式的,应该可以在任何shell中使用,$[expression]$expression版本在bash中工作,但我不确定它们是否包含在POSIX中 更新:$[e

Shell 基于目录中文件的多个循环

我正在制作一个shell脚本,我需要它来生成一个循环。我有一个名为Files的目录。在文件中有两个文件夹。每个文件夹包含500个文件(folder1和folder2)。我需要从folder1和folder2中获取文件名,因为我需要将folder1中的文件名与folder2连接起来。它需要对其中的每个文件执行此操作。25万次 有人知道我将如何编写循环,以便能够正确地从两个目录中获取所有名称并循环吗?类似的操作应该可以做到,假设这两个子目录分别名为dir1和dir2,此示例仅自然地回显了这些名称 #

Shell 使用“错误”;查找“;unix中的命令

我只是在尝试下面的代码,但它不起作用。。请建议更正此代码 echo abc.txt | while read name; do find . -name $name; done 输出成功:./rak/abc.txt echo 'abc.txt pqr.txt' | while read name; do find . -name $name; done 输出错误:查找:0652-009缺少连接 echo "abc.txt pqr.txt" | while read name; do find

Shell 如何在所有本地用户';s帐户,即桌面、文档、图片、视频、音乐

好的,我正在写一个超级酷的vbscript/HTA文件。我想做的就是 在列表框中列出计算机中的所有本地用户名(我已经可以了),然后 对于列表框中的每个用户,将他们的桌面、mydocuments、Video、pictures、music复制到我选择的目标文件夹(例如d:\backupdestination) 现在大部分脚本都在运行,我也知道我可以使用&H5&type常量访问上面提到的登录用户(即运行脚本的人)的特殊文件夹 现在我不知道其他用户配置文件在哪里,它们可能在c:\users\John(通

Shell autoconf:我应该总是使用AS\u IF over IF和m4\u IF吗?

autoconf手册建议使用作为IF而不是IF,但没有提到m4 IF。AS_IF是否也应优先于m4_IF 手册的这一部分说要像使用一样使用,以实现它的可移植性,但手册中说要使用它来扩展所需的宏 我是否应该总是像使用一样使用?答案似乎是肯定的,但我再次看到其他宏中使用了if和m4\u if。什么时候可以不使用AS_IF?AS_IF的另一个好处是,当它展开时,分支中的宏所需的任何宏都会在测试之前展开 请参阅。我对此感到困惑,因为我没有意识到if/AS_if和m4_if之间的根本区别。当用户运行脚本时

Shell 如何使用gnu'将自定义日期格式转换为备用格式;日期';指挥部?

我有一个用日语编写的自定义日期格式的字符串:2013年1.月8.日 20時19分。使用osx的date命令,我可以使用以下命令将其转换为其他格式: timestamp="2013年1月8日 20時19分" date -j -f "%Y年%m月%d日 %H時%M分" "$timestamp" +"%F %R" 在搜索时我找到了,但最终在gnudate上没有帮助。命令gdate-d“2013年1.月8.日 20時19分" +"%F%R“表示不理解日期格式失败。-d标志允许一些简单的格式,但是如何应

Shell sed脚本中的空正则表达式

从著名的“sed one liners”中找到了下面的sed脚本来反转每行中的字符,我无法在脚本的//D中执行下面的命令 sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' 假设初始文件有两行以say开头 apple banana 第一个命令下达后, /\n/!G 模式空间是 apple banana apple pple a banana anana b [每行后面都会引入一行新行。代码标记会在此处删除最后一行新行。因此不会显示该行]

Shell qdel是否全部删除其他用户';什么工作?

我是许多使用超级计算集群的人中的一个。如果我在Ubuntu终端中调用qdel-all,它会杀死所有人的作业还是只杀死我的作业?默认情况下,我相信它只会删除同一用户的作业 退房 在源代码中,它在哪里说它只删除同一用户的作业?假设我们以ssh-l zurich clustername的身份登录,是否会删除zurich的所有作业或集群上的所有作业?如果qdel是由普通用户发布的,它只会删除用户拥有的作业。quote“批处理作业的所有者、批处理操作员或批处理管理员可能会删除该批处理作业。”。要删除非用户

Shellscript-gzip多文件并运行所有

对于同时运行多个gzip文件,有什么建议吗。 例如: file\u a.out 归档 归档 文件输出 gzip过程 gzip-f文件\u a.out gzip-f文件输出 gzip-f文件输出 gzip-f文件输出 和脚本一起运行,有什么建议吗 谢谢团队:)使用GNU并行 parallel -j 8 < file.txt parallel-j8

Shell 循环中的变量赋值

我正在编写一个shell脚本,用于读取和报告时间戳(当前时间戳存储在$g2中)。最后,我将比较这两个时间戳 我想检查$t2是否为空-如果为空,则将其存储为$g2。 如果没有,则将$t2替换为$t1,并将新的$g2值存储为$t2 我正在尝试将其输出到sudo csv样式的文件中,但当我尝试运行此脚本时,我不断收到“未找到命令”错误。有什么建议吗 if [[ -z "$t2" ]] then $t2=$g2 echo "$t1,0,0" >> just_time.

Shell 带鱼壳射程的撑杆扩展

在bash中,我可以执行以下操作 $ echo bunny{1..6} bunny1 bunny2 bunny3 bunny4 bunny5 bunny6 有没有办法在鱼身上达到同样的效果?简单的答案是回声兔(seq 6) 更详细的回答:为了与fish用具体命令取代神奇语法的理念保持一致,我们应该寻找一个Unix命令来替代语法结构{1..6}顺序符合要求;它输出某个范围内的数字,在本例中是1到6之间的整数。fish(遗憾的是)省略了seq的帮助页面,但它是一个标准的Unix/Linux命令 一

Shell 为什么在Unix中读取文件时标志的值不更改

我试图读取一个文件,每当我在该文件中得到“true”时,我就会切换该标志,但它不起作用。在while循环中,我得到了更改后的值,但一旦它退出循环,就会显示初始值。以下是脚本代码: echo "file:" read filename flag=0 while read line do if [ $line = true ] then flag=1 echo "Inside loop :$flag" break fi done < $file

Shell 在别名中执行第一个命令后,将相同的文件路径传递给命令

我正在将make测试输出转储到文本文件 make test > & ~/Desktop/makeTestOutput.txt 现在,我想制作一个别名,在make测试转储完成后,我制作的下一个命令fetest应使用路径~/Desktop/makeTestOutput.txt,解释并在终端中显示可读数据 我本来想做这个maketest>&$1 | fetest$1,但这并不会将文件路径输送到fetest,别名会自动处理参数,而且仅仅使用别名是不可能做到的。您应该改用函数。查看此处了解

批处理相当于shell脚本-->;状态=”$(ps aux“grep流程”U名称“grep-v grep”)“;

在*NIX系统中,您可以通过以下方式获取给定进程名称的信息: status="$(ps aux | grep process_name | grep -v grep)" 批次中的等效物是什么 我知道批处理中的grep等价物是FNDSTR,但我如何将命令行成管道并将结果存储到变量中 for /f "delims=" %%a in ('qprocess ^| find /i "process_name"') do set "status=%%a" 这是一种方法。Tasklist可以自己进行过滤

Shell echo psc | tAdmin-作为个人,它是如何工作的?

我正在使用以下命令: echo psc | tmadmin 其输出如下: SEFREEUSP00 SEFREEUSP00 julRSecur 146 xyz 0有效 seExpireUse+seExpireUse+julRSecur 2014年7月xyz 0可用 我知道它返回tuxedo环境中的服务列表 我的问题是-单个命令的作用是什么?我的意思是,使用了管道命令。第一个的输出是第二个的输入。 那么这个命令是如何单独工作的呢?tmadmin正在从stdin读取它的命令。因此,当您在字符串psc

Shell 从文件中读取文件名,并使用状态更新另一个文件

我有一个文本文件abc.txt,它包含一些文件名 我必须编写一个shell脚本来检查abc.txt中列出的文件名是否存在于目录中 然后创建一个新文件,其中包含状态为“存在”或“不存在”的文件名。您需要类似以下内容: while read line do if [[ -f $line ]] then echo "File $line exists" else echo "Creating file $line" tou

shell脚本中的For循环

我正试图打印一些唱片,但无法打印输出 #!/bin/bash a='xyx_n' b='xzx_n' c='xkx_n' val=(1,2,4,5) #a=($val) for (( i=0;i<=3;i++ )) do echo "$a|$b|$c|${val[$i]}" >> "/tmp/test1" done Output xyx_n|xzx_n|xkx_n|1,2,4,5 xyx_n|xzx_n|xkx_n| xyx_n|xzx_n|xkx_n

Shell 使删除我的目标。为什么?

从: 第二个区别是,如果make确实创建了B,以便 更新其他内容,它会在不再更新B之后删除B 需要。因此,以前不存在的中间文件 make之后也不存在make生成将删除报告给 您可以通过打印显示要删除的文件的rm-f命令来删除 现在,一个makefile,如下所示: $(壳牌rm-rf x D) $(shell mkdir D) $(shell touch D/x) VPATH=D 全部:x; 虚假的 @回显“$@” .中级:D/x .冒牌货 运行: $make D/x rm D/x $ls D

Shell 在linux中,多字符串grep必须输出文件名:target string:count

我想在当前目录的所有文件中grep字符串管理器和DBA,并以 filename:Target string:count我不知道您是否在寻找一行程序,但我认为这应该提供您想要的输出 从两个文件开始: test_file.txt: HEre is some random text Manager Some stuff Manager Testing This Manager did DBA and this manager did DBA too but these guys did not 和t

Shell 想要在我正在构建的自定义脚本中使用find命令的结果

我想验证我的XML是否格式良好,但我的一些文件没有一个根(根据业务要求,这很好,例如,…在我的上下文中是有效的XML),xmlwf可以这样做,但如果没有一个根,它会标记出一个文件,因此我想构建一个内部使用xmlwf的自定义脚本,我的自定义脚本应该如下所示 遍历作为输入传递的文件列表(例如sample.xml或s*.xml或*.xml) 为每个文件准备一个临时文件,作为+文件内容+ 并在临时文件上调用xmlwf, 有人能帮上忙吗?您可以使用cat和bash向文件的开头和结尾添加文本,以便为验证目的

Shell 在Midori中使用命令行操作

我试图控制一个现有的Midori实例,我用 midori-e全屏 它工作正常。然后命令如下 下一个 米多里背 工作正常。但是当我试着去做的时候 midori-e位置www.google.com 这给了我一个错误 **(midori:1107):警告**:意外操作“www.google.com” 我试过在URL周围加上破折号、冒号和双引号,但都会出现同样的错误 我知道我可以在命令行上传递一个URL,但这会启动一个新的Midori实例,这正是我试图避免的。感谢您的帮助 我发现另一个问题问了同样的问题

Shell unix中基于YYYYMM的日期差异

如何计算这两个日期之间的差异,并将输出作为月数计数 即 您可以尝试以下解决方案- 201609-201508=13month 测试用例- 时差的计算通常是一项复杂的任务,即使是对于单一的日历类型(也有)。许多编程语言都内置了对日期和时间操作的支持,包括计算时差。但是,不幸的是,在流行的shell中,最有用的功能是缺少此功能的命令 因此,我们应该用另一种语言编写脚本,或者做一些假设,比如一年中的天数 例如,在Perl中,任务只需四行代码即可完成: [vipin@hadoop ~]$ cat ti

Shell 使用srec工具从十六进制文件中读取给定地址的数据

我想知道是否有一种方法可以使用srec工具系列(如srec_cat或srec_info)从给定地址的.hex文件中读取数据。我知道我可以自己解析这个文件,但肯定已经有了一个工具。有人做过类似的事情吗 今天我找到了一个解决方案,使用srec_cat只将hex文件的一部分写入二进制输出文件 srec_cat.exe my.hex -intel -crop 0x08010000 0x08010040 -offset -0x08010000 -o out.bin -binary 数据表指出,也可以将

Shell 如何计算时间序列的异常?

我有一个温度数据的时间序列,如下所示: ifile.txt 1921 25 1922 25.1 1923 24.2 1924 23.4 1925 24.4 1926 25.1 1927 23.6 1928 25.2 1929 23.9 1930 25.6 我想计算1923-1929年间的异常情况 我的算法是: 1923 24.2 - (average of the temperatures during 1923-1929) 1924 23.4 - (average o

Shell 删除zip文件中文件名开头的空格,而不提取zip文件

我在一个目录中有n个zip文件。在这些zip文件中,文件名的开头有空格。我只想删除此空间而不提取zip文件 我尝试了一个shell脚本,如下所示 #!/bin/sh for zip in *.zip do unzipped=unzip $zip trimmed=echo "${unzipped}" | sed -e 's/^[ \t]*//' #Want to zip the file here with the same name done 需要此脚本中的帮助,或者最

Shell 按歌曲持续时间将文件拆分到子文件夹中

我对PowerShell是一个全新的人,通过四处搜索,我没有找到任何关于它的信息。所以我会在这里问,看看是否有人知道这是可能的,以及如何做到这一点 我的文件夹里有1000个mp3文件。我想把它们分成几个子文件夹,但每个子文件夹的播放时间应该是1小时,或者至少尽可能接近1小时,最好是超过1小时,而不是少于1小时 所以我得看看mp3文件的长度,它们通常有2-4分钟长。我想先得到足够的mp3文件,这样总共有1小时的播放时间。然后将它们移动到子文件夹中,并将其命名为List*n*,其中每个子文件夹的n递

Shell 使用bash删除参数中的特殊字符

我想使用bash脚本从给定的参数中删除(和)。请帮帮我。用于删除其他spl字符的Sed命令在这里不起作用您在注释中给出的Sed命令中得到了额外的空间。这会导致正则表达式只替换这些字符中的任何一个“加上一个空格”(例如,它将a.b转换为ab,但它不会只匹配没有空格的单个,因此a.b保留为a.b) 您应该使用sed的//[.()]//g'。例如: $ echo "((ab.))(" | sed 's/[. ()]//g' ab 请注意,这是GNUsed——其他版本的行为可能不同 还要注意,不需要在

Shell 如何删除双引号之间的双引号

如何删除一组双引号之间的双引号 “Test T”est”应作为“Test Test” “Test T”est、“Test1”Test1“应以“Test Test”、“Test1 Test1”的形式获得输出您可以使用awk进行尝试: $ awk -F", *" '{ # Set the field separator for(i=1;i<=NF;i++){ # Loop through all

Shell 如何声明不包含';不允许使用getopts进行任何参数

我试图了解如何使用getopts为ksh脚本配置选项,我发现了以下详细信息: Use:用于需要参数的选项。 对于需要数字参数的选项,请使用#。 用途:?和#?用于允许参数但不需要参数的选项。 但是,是否可以声明一个不允许任何参数的选项,并添加关于该选项的文本描述?不同的getopt()方法会有所不同。有不同语言的,甚至。。。哪一个 阅读精美的文档!我相信你会在那里找到各种各样的例子,而且作为奖励,比在这里提问和等待答案更快

Shell 如何执行从s3加载更多脚本的EMR步骤?

我想在EMR上执行一个shell脚本,加载一个tarball,解压它并在里面运行脚本。我选择此设置是为了尽可能不依赖供应商。 我的剧本是 #!/bin/sh aws s3 cp s3://path_to_my_bucket/name_of.tar.gz . tar -xzf name_of.tar.gz . main_script.sh 其中,main_script.sh是tarball的一部分,还有许多其他包、脚本和配置文件 如果我在主节点上以Hadoop用户的身份运行此脚本,那么一切都会正

基于Shell中的CSV重命名包含空间的文件目录

我需要重命名文件夹中有空间的文件egDeco/main library/file1.txt 代码: 错误: mv:无效选项-“\” 欢迎来到Stackoverflow 第一:在使用变量时使用引号。这意味着除非在非常罕见的情况下,否则您应该始终使用$foo而不是$foo,因为如果您使用后者,则假定shell将变量中的空格解释为您很少需要的单词分隔符。尤其是在你的情况下,你不想要它 第二:CSV文件似乎包含反斜杠来引用空格。一些额外的步骤似乎增加了另一个级别的引用,因此,现在,每个原始空格都有三个反

将用户凭据从yaml文件解析到shell脚本中

我必须将Bugzilla帐户的用户凭证从yaml文件解析到触发Jenkins作业的shell脚本中 --- -名称:'USER_BUGZILLA' 价值来源: secretKeyRef: 名称:“bugzilla_机器人” 键:“用户” -名称:“密码_BUGZILLA” 价值来源: secretKeyRef: 名称:“bugzilla_机器人” 键:“密码”假设您的yaml文件名为“foo.yaml” read-r用户密码假设您的yaml文件名为“foo.yaml” read-r用户密码非常

如何将putty中执行的shell脚本的值存储到Jenkins groovy管道中的变量中?

我正在从Jenkins groovy pipeline的后台调用一个.sh。sh在putty上被处决(詹金斯奴隶)。我想将该.sh文件的输出存储到一个可以在Jenkins groovy管道中使用的变量中 我试过下面的代码,但没有用。这就是为什么我在putty上执行shell,然后存储变量: result = sh ( script: 'shell code', returnStdout: true).trim() echo "Output: ${result}" 变量结果应该得到shell脚

Shell 当脚本失败时,它不会';“不要做回声”;“文本”&燃气轮机&燃气轮机;文件

我有一个脚本,在它的开头和结尾,有一个: echo "start" >> log echo "end" >> log 原因是,当脚本无法控制地失败时,我在日志文件中看不到任何行。但是,当脚本正确完成时,日志在日志中可见 有人知道为什么会这样吗?您需要将错误输出(2)指向标准标准标准输出: echo "start" >> log 2>&1 echo "end" >> log 2>&1 因为标准的stderr是2,所以

在shell脚本中提取json负载

我有一个像下面这样的文件。如您所见,花括号之间几乎没有行/内容。由于有多组打开和关闭的花括号,我想分别获取每行的花括号({和})之间的内容 示例文件: 预期结果:需要3个分开的数据块,位于花括号之间 有人能帮我吗?如果您有一系列有效的JSON对象,您可以使用jq轻松、可靠地处理它们: 给定文件.jsons: { "/tmp/©ƒ-4bf57ed2-velero/velero/templates/crds.yaml": [ "" ], "/tmp/velero-4bf57ed2-

Shell emacs“;comint发送字符串:缓冲区*垃圾邮件*没有进程“;在python模式下

我有一组简单的emacs lisp行,用于插入我的首字母和时间/日期戳,但在某些模式下(例如python模式)已经停止工作。在这些模式下,它抛出错误comint发送字符串:Buffer*spam*没有进程,其中“spam”是我试图添加时间戳的缓冲区 lisp行是: (取消msl insert datetime()(交互式)(插入(格式时间字符串“%Y-%m-%d%H:%m ABC:”) (全局设置键[(控件c)(控件d)]msl插入日期时间) 这在各种模式(文本模式、lisp模式等)的缓冲区中都

Shell 如何在csv文件中使用awk命令

在我们的csv中,名称包括年、月、日期、小时、分钟,如:abc_20200211500.csv 所以我们每次都有很多csv文件 如果我想搜索1234在2020年12月02日15:00-15:59之间的号码 awk -F"|" '{if ($3 == 1234) print $5}' abc_2020021115*.csv 那么,如果我想在同一日期,但在15:00-17:00之间写相同的数字,该怎么办 awk -F"|" '{if ($3 == 1234)

Shell 使用sed,我需要替换值

上面是json内容,基本上我需要更新startdate enddate proposeddate,我已经使用sed命令进行了更新 { "test.yaml": "# Copyright (c) 2019-2020 .\n# All Rights Reserved.\n#\n#\n\trace1:\n - trace-id:\n - \"immm-0555555555\"\n - \"mncid-666666

Shell 如何从文本文件中删除包含特定字符串的所有行?

如何使用sed删除文本文件中包含特定字符串的所有行?删除该行并将输出打印到标准输出: sed '/pattern to match/d' ./infile 要直接修改文件–不适用于BSD sed,请执行以下操作: sed -i '/pattern to match/d' ./infile 相同,但对于BSD sed(Mac OS X和FreeBSD)–不适用于GNU sed: sed -i '' '/pattern to match/d' ./infile 要直接修改文件(并创建备份),请

unixshell脚本中的模式匹配

我有两个文件,如下所示: 文件1: id1 hftujdbbd bdurijtbr grhjend Ghent id2 fu Rubens hejdnnd bdudndn id3 gjbfbd vhrjend rjndnd . . . id1 id2 文件2: id1 hftujdbbd bdurijtbr grhjend Ghent id2 fu Rubens hejdnnd bdudndn id3 gjbfbd vhrjend rjndnd . . . id1 id2 我需要找到