草庐IT

linux - 当文本行出现在文件中时如何使用 Bash 做一些事情

我想在特定文本出现在日志文件中时立即运行命令。我如何在Bash中做到这一点? 最佳答案 使用命令tail-ffile.log|grep--line-buffered"mypattern"|whilereadlinedoecho$linedone--line-buffered是这里的关键,否则会读取失败。 关于linux-当文本行出现在文件中时如何使用Bash做一些事情,我们在StackOverflow上找到一个类似的问题: https://stackoverf

linux - 如何在 Bash 脚本中将字符串作为参数传递给 AWK

我有一个要过滤的文本文件使用awk。文本文件如下所示:foo1bar2bar0.3bar100qux1033我想在bash脚本中使用awk过滤这些文件。#!/bin/bash#inputfileinput=myfile.txt#Ineedtopassthisasparameter#coslaterIwanttomakeitmoregenerallike#coltype=$1col1type="foo"#Filtersawk'$2>0&&$1==$col1type'$input但不知何故失败了。正确的做法是什么? 最佳答案 使用awk

linux - 如何在 Bash 脚本中将字符串作为参数传递给 AWK

我有一个要过滤的文本文件使用awk。文本文件如下所示:foo1bar2bar0.3bar100qux1033我想在bash脚本中使用awk过滤这些文件。#!/bin/bash#inputfileinput=myfile.txt#Ineedtopassthisasparameter#coslaterIwanttomakeitmoregenerallike#coltype=$1col1type="foo"#Filtersawk'$2>0&&$1==$col1type'$input但不知何故失败了。正确的做法是什么? 最佳答案 使用awk

linux - 计算输入文件中字符串的出现次数

有一个shell脚本应该处理传入的文本文件。此文本文件包含分成多行的字符串,并且每个字符串出现不止一次。shell脚本需要读取这个文本文件,输出String和每个字符串的个数。考虑文本文件是:TimtimMarkMARkAllenALLenallEN输出应该是这样的:Timappears2timesMarkappears2timesAllenappears3times现在,我能够打印字符串的出现次数,但会重复字符串出现的次数,即“Timappears2times”被打印两次。我试图在计算它的出现后立即用NULL替换一个字符串,但由于某种原因,sed不工作,因为我可能没有在正确的位置(或

linux - 计算输入文件中字符串的出现次数

有一个shell脚本应该处理传入的文本文件。此文本文件包含分成多行的字符串,并且每个字符串出现不止一次。shell脚本需要读取这个文本文件,输出String和每个字符串的个数。考虑文本文件是:TimtimMarkMARkAllenALLenallEN输出应该是这样的:Timappears2timesMarkappears2timesAllenappears3times现在,我能够打印字符串的出现次数,但会重复字符串出现的次数,即“Timappears2times”被打印两次。我试图在计算它的出现后立即用NULL替换一个字符串,但由于某种原因,sed不工作,因为我可能没有在正确的位置(或

linux - Bash - 为我在猫?

我不是bash脚本编写者,所以这无疑是一个非常简单的问题。我有一个bash脚本抛出错误。它看起来像这样:#!/bin/bashforiin(cat/root/list.txt)dodoSomethingdone错误在第二行,与大括号有关。所以大括号似乎不应该在这里...在这种情况下,第2行应该是什么样子?脚本应该从/root/list.txt中读取每一行,然后用它做一些事情(我删除了这个例子的实际命令。)谢谢! 最佳答案 可能foriin$(cat/root/list.txt) 关于li

linux - Bash - 为我在猫?

我不是bash脚本编写者,所以这无疑是一个非常简单的问题。我有一个bash脚本抛出错误。它看起来像这样:#!/bin/bashforiin(cat/root/list.txt)dodoSomethingdone错误在第二行,与大括号有关。所以大括号似乎不应该在这里...在这种情况下,第2行应该是什么样子?脚本应该从/root/list.txt中读取每一行,然后用它做一些事情(我删除了这个例子的实际命令。)谢谢! 最佳答案 可能foriin$(cat/root/list.txt) 关于li

linux - 删除 bash 中最后一个点的所有文本

我有一个名为test.txt的文件,其中包含:abc.cde.ccd.eed.12345.5678.txtabcd.cdde.ccdd.eaed.12346.5688.txtaabc.cade.cacd.eaed.13345.5078.txtabzc.cdae.ccda.eaed.29345.1678.txtabac.cdae.cacd.eead.18145.2678.txtaabc.cdve.cncd.ened.19945.2345.txt如果我想删除第一个.之后的所有内容,例如:cde.ccd.eed.12345.5678.txtcdde.ccdd.eaed.12346.5688.

linux - 删除 bash 中最后一个点的所有文本

我有一个名为test.txt的文件,其中包含:abc.cde.ccd.eed.12345.5678.txtabcd.cdde.ccdd.eaed.12346.5688.txtaabc.cade.cacd.eaed.13345.5078.txtabzc.cdae.ccda.eaed.29345.1678.txtabac.cdae.cacd.eead.18145.2678.txtaabc.cdve.cncd.ened.19945.2345.txt如果我想删除第一个.之后的所有内容,例如:cde.ccd.eed.12345.5678.txtcdde.ccdd.eaed.12346.5688.

linux - 如果子进程在后台启动并且父进程已经退出,如何知道父进程

我有一个子进程在前台运行,他的父亲已经退出。proc/$pid/stat文件不再包含父pid,如果父pid已经退出,它显示1而不是原始父pidlinux$cat/proc/6267/stat6267(test3.sh)S16265......#^#|#IexpectedtogettheoriginparentpidbutIget1要快速重现此行为,我们可以使用以下脚本test2.sh#!/bin/shecho"test2=$$"./test3.sh&test3.sh#!/bin/shecho"test3=$$"sleep1000执行:linux$./test2.shtest2=6318