Linux Grep“-";所有机器上的命令
我使用的是Linux Grep“-";所有机器上的命令,linux,grep,aix,hp-ux,sunos,Linux,Grep,Aix,Hp Ux,Sunos,我使用的是grep-c1“匹配字符串”“xty.pom” 这可以在Linux机器上运行,但同样的代码在AIX、SunOS_x64、HPUX等其他平台上不起作用 是否有任何替代方案,以便在所有平台上使用相同的代码逻辑?这将像grep-C 1“匹配字符串”一样工作,但应在不支持grep的-C选项的平台上工作: awk '/matching string/{print last; f=2} f{print; f--} {last=$0}' File 工作原理 /matching string/{p
grep-c1“匹配字符串”“xty.pom”
这可以在Linux机器上运行,但同样的代码在AIX、SunOS_x64、HPUX等其他平台上不起作用
是否有任何替代方案,以便在所有平台上使用相同的代码逻辑?这将像
grep-C 1“匹配字符串”
一样工作,但应在不支持grep的-C
选项的平台上工作:
awk '/matching string/{print last; f=2} f{print; f--} {last=$0}' File
工作原理
如果当前行与regex/matching string/{print last;f=2}
,则打印上一行(保存在匹配字符串
)并将最后一行
设置为2f
如果f{print;f--}
为非零,则打印当前行并减小f
f
将last=$0
设置为等于当前行的内容last
awk '/a/{if (NR>1 && !f)print last; f=3} f>1{print} f{f--} {last=$0}'
作为重叠匹配的输出示例:
$ printf '%s\n' a a b | awk '/a/{if (NR>1 && !f)print last; f=3} f>1{print} f{f--} {last=$0}'
a
a
b
Sun/Solaris
Sun/Solaris上的本机awk充满了臭名昭著的bug。改用nawk
或
更好的是
/usr/xpg4/bin/awk
或/usr/xpg6/bin/awk
当regexp不出现在文件开头或连续行上时,awk命令的行为与grep-c1
类似。尝试使用grep-c1
和awk命令在包含a\na\nb\n
(其中\n
是文字换行符)的文件中搜索a
,注意grep按原样输出文件(a\na\nb\n
),而awk输出\na\na\nb\n
。您的问题将显示一个简洁、可测试的示例输入、预期输出以及您迄今为止所尝试的内容,我们将为您提供帮助。