小编nul*_*ion的帖子

尾巴-f到grep切成不正常

我正在尝试构建一个shell脚本来监视一些日志文件.我正在使用这样的命令:

tail -f /var/somelog | grep --line-buffered " some test and p l a c e h o l d e r" | cut -f 3,4,14 -d " "
Run Code Online (Sandbox Code Playgroud)

日志文件如下:

some test and p l a c e h o l d e r 3
some test and p l a c e h o l d e r 4
some test and p l a c e h o l d e r 5
some test and p l …
Run Code Online (Sandbox Code Playgroud)

bash shell grep cut tail

17
推荐指数
1
解决办法
8395
查看次数

将传递的参数存储在单独的变量-shell脚本中

在我的脚本"script.sh"中,我想将第一个和第二个参数存储到某个变量中,然后将其余参数存储到另一个单独的变量中.我必须使用什么命令来执行此任务?请注意,传递给脚本的参数数量会有所不同.

当我在控制台中运行命令时

./script.sh abc def ghi jkl mn o p qrs xxx   #It can have any number of arguments
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望我的脚本在一个变量中存储"abc"和"def"."ghi jkl mn op qrs xxx"应存储在另一个变量中.

bash shell argument-passing

6
推荐指数
1
解决办法
2万
查看次数

如何让awk处理它解析的每个文件的BEGIN块?

我有一个awk脚本,我正在对一对文件运行.我这样称呼它:

awk -f script.awk file1 file2

script.awk看起来像这样:

BEGIN {FS=":"}
{ if( NR == 1 )
    { 
      var=$2
      FS=" "
    }
   else print var,"|",$0
}
Run Code Online (Sandbox Code Playgroud)

每个文件的第一行是冒号分隔的.对于每一行,我希望它返回到默认的空白文件分隔符.

这适用于第一个文件,但失败,因为在每个文件之后FS没有重置:,因为BEGIN块只处理一次.

tldr:有没有办法让awk处理BEGIN块一次为我传递的每个文件?

我在cygwin bash上运行它,以防万一.

bash awk cygwin

5
推荐指数
2
解决办法
1178
查看次数

标签 统计

bash ×3

shell ×2

argument-passing ×1

awk ×1

cut ×1

cygwin ×1

grep ×1

tail ×1