Linux 仅列出每个基本频道的Red Hat卫星子频道
我正在编写bash脚本来将频道从一个卫星复制到另一个卫星 我只想获取基本频道的子频道列表: clone-rhel-x86_64-server 我特意使用grep-E-A10来给出 最多10个子频道 现在我得到:Linux 仅列出每个基本频道的Red Hat卫星子频道,linux,bash,Linux,Bash,我正在编写bash脚本来将频道从一个卫星复制到另一个卫星 我只想获取基本频道的子频道列表: clone-rhel-x86_64-server 我特意使用grep-E-A10来给出 最多10个子频道 现在我得到: rhn-satellite-exporter --list-channels |grep -E -A10 '(^| )clone-rhel-x86_64-server( |$)'|grep -v "^B" C child_channel1 C child_cha
rhn-satellite-exporter --list-channels |grep -E -A10 '(^| )clone-rhel-x86_64-server( |$)'|grep -v "^B"
C child_channel1
C child_channel2
C child_channel3
C child_channel4
C child_channel5
C child_channel7
我的目的是只获取第一部分,即仅获取子频道
对于基本通道:clone-rhel-x86_64-server
rhn-satellite-exporter --list-channels |grep -E -A10 '(^| )clone-rhel-x86_64-server( |$)'|grep -v "^B"
C child_channel1
C child_channel2
C child_channel3
如何实现这一点?实现这一点的一种方法是使用
perl
的段落模式。从人力资源
:
-0[octal/hexadecimal]
specifies the input record separator ($/) as an octal or
hexadecimal number. [. . .]
The special value 00 will cause Perl to slurp files in paragraph
mode. [. . .]
在段落模式中,“行”由\n\n
定义,而不是单独定义\n
,因此每个“行”实际上是一个段落。因此,您可以使用Perl one liner并告诉它打印第一行并退出:
rhn-satellite-exporter --list-channels |
grep -E -A10 '(^| )clone-rhel-x86_64-server( |$)'| grep -v "^B" |
perl -00ne 'print;exit'
请注意,上面也将打印空行,因为这被视为段落的一部分。为了避免这种情况,您可以将其解析出来:
rhn-satellite-exporter --list-channels |
grep -E -A10 '(^| )clone-rhel-x86_64-server( |$)'| grep -v "^B" |
perl -00ne 'print;exit' | grep .
或者在Perl脚本本身中删除它:
rhn-satellite-exporter --list-channels |
grep -E -A10 '(^| )clone-rhel-x86_64-server( |$)'| grep -v "^B" |
perl -00ne 's/\n\s*\n/\n/;print;exit' | grep .
我投票结束这个问题,因为它最适合Unix和Linux SE!虽然这个问题适用于Unix和Linux,但它是一个bash问题,所以这里也讨论这个问题。
child_通道{1,2,3}
与child_通道{4,5,7}
的区别是什么?是否存在使它们彼此不同或是它们之间的空白行,分隔符,并且您希望在空白行上方但不在下面的那些通道上?嗨,伊坦,您正确地理解我,子信道{1,2,3}属于所需的基本信道,所以我希望在空白行上方打印子信道,而不是那些空白的LeSeNANK下你的答案,但实际上我得到了同样的结果:RHN卫星出口商——列表频道:GRIP-E-A10’(^ ^)克隆克隆RHEL-X86Y64-Server($$)'GRIP-V“^ B”Perl -0Ne的打印;退出'C child_channel1 C child_channel2 C child_channel3 C child_channel4 C child_channel5 C child_channel7,我已经尝试了所有选项。@Max_il在什么操作系统上?嗨,terdon,操作系统是:Red Hat Enterprise Linux Server 6.6版