Re: [OT] Oneliner - X letzte Felder ausgeben
Hallo,
Am Die, 28 Nov 2006, Aleks schrieb:
>David Haller wrote:
>>Am Die, 28 Nov 2006, Aleks schrieb:
>>| awk '{while(i>0){printf "%s ",$(NF-i); i--; } }END{print""}' i=2
>>| awk -v i=2 '{while(i>0){printf "%s ",$(NF-i);i--;}}END{print"";}'
>>
>>Oder noch etwas verfeinert:
>>
>>| awk -v f=3 '{ i=f;
>> while( i > 0 ) {
>> printf "%s ", $(NF-i);
>> i--;
>> }
>> if( f > 0 ) { print""; }
>> }'
>>
>>Funktioniert dann auch mit mehreren Zeilen ;)
>>
>mmmh, bei mir funktionieren die alle nicht für mehrere Zeilen.
Nur das letzte.
>Die letzte schmeißt nen Fehler..
Welchen?
Korrektur (habe nen Sonderfall nicht beachtet):
$ echo "lala lulu lili bambam bumbum
bambam bumbum lala lulu lili
foo bar" | awk -v f=2 '
{
i=f;
if( f < NF ) {
while( i > 0 ) {
printf "%s ", $(NF-i);
i--;
}
if( f > 0 ) { print""; }
} else {
print;
}
}'
lili bambam
lala lulu
foo bar
$ awk --version | head -n 1
GNU Awk 3.0.4
>Wie wäre es mit:
>
>$ cat data
>lala lulu lili
>bambam bumbum
>$ cat data|perl -ane'$i=1;for(reverse(0..$i)){next if
>$#F<$_;print"$F[$#F-$_] "};print"\n"'
>lulu lili
>bambam bumbum
>$
Nochwas:
$ echo "lala lulu lili bambam bumbum
bambam bumbum lala lulu lili
foo bar" | perl -ane '$i=2; if ( $i < $#F ) {
print join(" ", @F[$#F-$i .. $#F]), "\n";
} else { print; }'
lili bambam bumbum
lala lulu lili
foo bar
$ echo "lala lulu lili bambam bumbum
bambam bumbum lala lulu lili
foo bar" | perl -ane '$i=1; if($i<$#F) {
print join(" ", @F[$#F-$i .. $#F]), "\n";
} else { print; }'
bambam bumbum
lulu lili
foo bar
$
*g*
-dnh
--
Ed Masry: Wie kommen sie auf die Idee, daß Sie da einfach reinschneien
und Akten mitnehmen können?
Erin Brockovich: Hey, wozu habe ich Titten?
Reply to: