是否有一种简单的方法可以根据开始和结束匹配对命令输出的多行进行分组?

时间:2016-10-08 21:18:12

标签: linux bash unix grep zsh

是否有一种简单的方法可以将多个与模式匹配的行分组为单行?

基本上,命令的输出列出如下内容:

d

我在此特定情况下的最终游戏是剥离其中包含特定条目的条目的XML。我可以这样做(并解决很多其他日常问题),如果每个条目都是自己的行而不是多行(Intent resultIntent = new Intent(context, MainActivity.class); resultIntent.setAction(Intent.ACTION_MAIN); resultIntent.addCategory(Intent.CATEGORY_LAUNCHER); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, resultIntent, 0); 匹配,key1 blah blah = dict { unrelated stuff { } something I actually want to match via grep or something some common end term for key1 I can use as an end pattern match } x 100 similar keys 之后的文本支架等。)

类似的东西:

grep

基本上'合并'命令会删除每个新sedprint multi-line crap | merge beginningpattern endpattern | grep lines now that everything is merged 之间的所有换行符(可能会在最后添加换行符)

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,那么awk和gsub会是正确的方法。例如:

required_string=$(cat $i.xml | awk 'BEGIN { x=0 ; y=0} /<yourStartingString>/ { x=1 } /<EndingString>/ {x=0} {if (x==1 && y==1) { gsub(/(.*<grepforwhatyouneed>)|(<endgrep>)/,"");print } } { if(x==1 && y==0) y=1 }')