我有一個這樣的名單趕上的Joomla版本打印線+接下來的兩行使用awk如果下一行匹配
./somedir/bla/old/libraries/cms/version/version.php
public $RELEASE = '2.5';
public $DEV_LEVEL = '24';
./somedir/bla3/www/libraries/cms/version/version.php
public $RELEASE = '2.5';
public $DEV_LEVEL = '9';
./somedir/bla4/www/libraries/cms/version/version.php
./somedir/bla5/www/w/scripts/version.php
./somedir/bla6/www/libraries/cms/version/version.php
./somedir/bla7/www/libraries/cms/version/version.php
public $RELEASE = '2.5';
public $DEV_LEVEL = '9';
我要的是,只有行+如果public
是兩個下一行顯示在下一行。否則線必須被忽略
所以結果應該是:
./somedir/bla/old/libraries/cms/version/version.php
public $RELEASE = '2.5';
public $DEV_LEVEL = '24';
./somedir/bla3/www/libraries/cms/version/version.php
public $RELEASE = '2.5';
public $DEV_LEVEL = '9';
./somedir/bla7/www/libraries/cms/version/version.php
public $RELEASE = '2.5';
public $DEV_LEVEL = '9';
我曾嘗試使用awk和這個awk腳本
BEGIN{ RS=""; FS="\n" }
/public/ {
for (i=1; i<=NF; i++) {
if (! (($i ~ /./) && ($(i+1) !~ /public/) && ($(i+2) !~ /public/))) {
print $i
}
}
print ""
}
但是這會導致:
./somedir/bla/old/libraries/cms/version/version.php
public $RELEASE = '2.5';
./somedir/bla3/www/libraries/cms/version/version.php
public $RELEASE = '2.5';
./somedir/bla7/www/libraries/cms/version/version.php
public $RELEASE = '2.5';
我錯過了dev_level的第二條公共線
此。兩次。 (三次由於你知道什麼) –
@JamesBrown對不起,我不明白...過了漫長的一天... –
三個字符填充。 –