Tag: awk

如何在awk / sed中多次出现两个标记模式之间select行

使用awk或sed我怎样才能select两个不同的标记模式之间发生的线? 可能有多个部分标有这些模式。 例如:假设文件包含: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr stu 而起始模式是abc和结束模式是mno所以,我需要的输出为: def1 ghi1 jkl1 def2 ghi2 jkl2 我使用sed来匹配一次模式: sed -e '1,/abc/d' -e '/mno/,$d' <FILE> 在sed或awk有什么方法可以重复执行,直到文件结束?

awk保存修改到位

我正在学习awk ,我想知道是否有一个选项来修改文件,类似于sed我将使用-i选项来保存对文件的修改。 我明白我可以使用redirect来写入更改。 但是有没有在awk的选项做到这一点?

如何select两种模式之间的线?

我有一个像下面的文件,我想打印两个给定的模式PAT1和PAT2之间的线。 1 2 PAT1 3 – first block 4 PAT2 5 6 PAT1 7 – second block PAT2 8 9 PAT1 10 – third block 我已经阅读了如何selectawk / sed中可能出现多次的两个标记模式之间的行,但我很好奇看到所有可能的组合,无论是否打印模式。 我怎样才能select两种模式之间的线?

如何在awk脚本中使用shellvariables?

我发现了一些将外部variables传递给awk脚本的方法,但是我对'和"感到困惑。 首先,我尝试了一个shell脚本: $ v=123test $ echo $v 123test $ echo "$v" 123test 然后尝试awk: $ awk 'BEGIN{print "'$v'"}' $ 123test $ awk 'BEGIN{print '"$v"'}' $ 123 为什么区别? 最后我尝试了这个: $ awk 'BEGIN{print " '$v' "}' $ 123test $ awk 'BEGIN{print ' "$v" '}' awk: cmd. line:1: BEGIN{print awk: cmd. line:1: ^ unexpected newline or end of string […]

使用sed或awk按照匹配模式打印一行

我想直接在包含匹配模式的行之后打印一行。 我的sed版本不会采用下面的语法(它在+1p上弹出),这看起来像一个简单的解决方案: sed -n '/ABC/,+1p' infile 我假设awk会更好地做多行处理,但我不知道该怎么做。