将 grep 输出传递给变量并使用该变量作为 shell 脚本中 sed 的输入

TK_93

我正在寻找编写一个 shell 脚本,该脚本使用 grep 从文件中获取行号,并将该行号用作 sed 命令的头部和尾部来剪切文件。

我的脚本看起来像这样:

head=$(grep -n -i -B 1 "^\s\+abcd" <sourcefilename> | head -n 1 | cut -d: -f1)
tail=$(grep -n -i  -B 1 " efgh" <sourcefilename>  | tail -n 1| cut -d: -f1)

if($head!=NULL)
then
        sed -n "$head,$tailp" <sourcefile>.txt > <newfile>.txt
fi

我的目标是使用第一个 grep,并在匹配模式时获取标题行号,然后在匹配模式时使用第二个 grep 获取尾行号,并将它们用作 sed 的输入 -n 开关和创建一个只有从头到尾的行号的文件。

如果我对文件单独执行它,比如

grep -n -i "^\s\+abcd" <filename> | head -n 1 | cut -d: -f1 , it gives me 11 and 
grep -n -i  " efgh" <filename>  | tail -n 1| cut -d: -f1 gives me 106. 

然后我用这些数字作为输入并做

sed -n 11,106 <sourcefile>.txt > <newfile>.txt 

它完美地工作。我正在尝试使该过程自动化,以便拥有一个可以同时针对多个文件运行的脚本。

此外,带有 NULL 的 if 语句意味着当 grep 不返回任何内容时,只是不运行循环,这似乎也会出错。

詹姆斯布朗

你可能只能用 awk 来解决这个问题。先来一些数据:

$ cat file
1
2
3
4
5
$ awk '/2/,/4/' file
2
3
4

你可以更换2,并4带有正确使用regexen的头部和尾部。

编辑:一个例子grep -B 1

$ awk '/2/{f=1;print p} f{print} /4/{f=""} {p=$0}' file
1
2
3
4

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用sed / grep在shell脚本中解析ansible输出

来自分类Dev

将变量值作为输入传递给从Shell脚本调用的oracle sql文件

来自分类Dev

如何将 shell 变量传递给读取脚本中控制台输入的命令?

来自分类Dev

使用“ grep搜索”的输出作为“ yum更新”的输入(Shell脚本)

来自分类Dev

Shell脚本中的Unix Lynx将数据输入到网站和grep结果中

来自分类Dev

如何在执行grep命令时将Shell脚本参数作为变量传递

来自分类Dev

使用cat或grep的输出作为sed的输入

来自分类Dev

将grep输出保留在shell变量中

来自分类Dev

如何将 C 代码输出输入到 shell 脚本变量中

来自分类Dev

是否可以将脚本传递给shell变量中的awk?

来自分类Dev

我无法从Shell脚本中的文本中删除新行(使用sed和grep)

来自分类Dev

我无法从Shell脚本中的文本中删除新行(使用sed和grep)

来自分类Dev

将变量作为选项传递给 shell 脚本 linux 中的 curl

来自分类Dev

将变量从shell脚本传递给jenkins

来自分类Dev

将输入传递给shell脚本调用的python脚本

来自分类Dev

如何使用SED或AWK而不是GREP,因为在Shell脚本中花费大量时间

来自分类Dev

SED语句替换Shell脚本中的变量

来自分类Dev

将脚本命令/输入传递给打开的 WinSCP shell

来自分类Dev

如何将Shell变量作为命令行参数传递给Shell脚本

来自分类Dev

如何将Shell变量作为命令行参数传递给Shell脚本

来自分类Dev

在Shell脚本中递增输入变量号

来自分类Dev

如何将Shell脚本变量传递给Expect脚本?

来自分类Dev

将grep输出输出到sed中以替换整行

来自分类Dev

使用grep / awk / sed查找确切的shell变量

来自分类Dev

使用awk,sed,grep对输入进行分组

来自分类Dev

帮助Shell脚本将变量传递给rsync

来自分类Dev

将python变量传递给嵌入式Shell脚本?

来自分类Dev

Jenkins工作流将变量传递给Shell脚本

来自分类Dev

将grep搜索结果传递到sed replace中

Related 相关文章

  1. 1

    使用sed / grep在shell脚本中解析ansible输出

  2. 2

    将变量值作为输入传递给从Shell脚本调用的oracle sql文件

  3. 3

    如何将 shell 变量传递给读取脚本中控制台输入的命令?

  4. 4

    使用“ grep搜索”的输出作为“ yum更新”的输入(Shell脚本)

  5. 5

    Shell脚本中的Unix Lynx将数据输入到网站和grep结果中

  6. 6

    如何在执行grep命令时将Shell脚本参数作为变量传递

  7. 7

    使用cat或grep的输出作为sed的输入

  8. 8

    将grep输出保留在shell变量中

  9. 9

    如何将 C 代码输出输入到 shell 脚本变量中

  10. 10

    是否可以将脚本传递给shell变量中的awk?

  11. 11

    我无法从Shell脚本中的文本中删除新行(使用sed和grep)

  12. 12

    我无法从Shell脚本中的文本中删除新行(使用sed和grep)

  13. 13

    将变量作为选项传递给 shell 脚本 linux 中的 curl

  14. 14

    将变量从shell脚本传递给jenkins

  15. 15

    将输入传递给shell脚本调用的python脚本

  16. 16

    如何使用SED或AWK而不是GREP,因为在Shell脚本中花费大量时间

  17. 17

    SED语句替换Shell脚本中的变量

  18. 18

    将脚本命令/输入传递给打开的 WinSCP shell

  19. 19

    如何将Shell变量作为命令行参数传递给Shell脚本

  20. 20

    如何将Shell变量作为命令行参数传递给Shell脚本

  21. 21

    在Shell脚本中递增输入变量号

  22. 22

    如何将Shell脚本变量传递给Expect脚本?

  23. 23

    将grep输出输出到sed中以替换整行

  24. 24

    使用grep / awk / sed查找确切的shell变量

  25. 25

    使用awk,sed,grep对输入进行分组

  26. 26

    帮助Shell脚本将变量传递给rsync

  27. 27

    将python变量传递给嵌入式Shell脚本?

  28. 28

    Jenkins工作流将变量传递给Shell脚本

  29. 29

    将grep搜索结果传递到sed replace中

热门标签

归档