V rámci linuxového súboru s nasledujúcim obsahom sa chcem zbaviť všetkého počnúc konkrétnym vzorom, ktorým je aws:
v tomto konkrétnom prípade:
aws:cloudformation:logical-id="somestring" Name="abc" Product="xyz" Role="www" aws:autoscaling:groupName="strings-and-numbers-012345" aws:cloudformation:stack-id="strings-and-numbers-012345" aws:cloudformation:stack-name="strings-and-numbers-012345"
Výstup, ktorý potrebujem, je len: Name="abc" Product="xyz" Role="www"
; ako to spravím?
odpovede:
1 pre odpoveď č. 1awk "{print $2,$3,$4}" file
Name="abc" Product="xyz" Role="www"
0 pre odpoveď č. 2
Čo tak
sed "s/aws:[^ ]*//g" filename
0 pre odpoveď č. 3
V awk:
$ awk "{for(i=1;i<=NF;i++)if($i!~/^aws:/)b=b(b==""?"":OFS)$i;print b;b=""}" file
Name="abc" Product="xyz" Role="www"
vysvetľuje:
{
for(i=1;i<=NF;i++) # iterate over every field
if($i!~/^aws:/) # if it doesn"t start start with aws:
b=b (b==""?"":OFS) $i # buffer it to b with OFS
print b # never stop iterating till the iterating is done and output
b="" # reset buffer
}
Nevýhodou je, že vypíše prázdny riadok, ak každé pole začína znakom aws:
. Tomu sa vyhnite if(b!="")
pred print b
.
0 pre odpoveď č. 4
Vzhľadom na to:
$ echo "$s"
aws:cloudformation:logical-id="somestring" Name="abc" Product="xyz" Role="www" aws:autoscaling:groupName="strings-and-numbers-012345" aws:cloudformation:stack-id="strings-and-numbers-012345" aws:cloudformation:stack-name="strings-and-numbers-012345"
S GNU Grep a Perl regex môžete:
$ echo "$s" | grep -Po "(bName=.*?)(?=aws)"
Name="abc" Product="xyz" Role="www"
Ak sú polia, ktoré vás zaujímajú, prísne pozičné, môžete použiť awk
alebo cut
pre tlač týchto pozičných polí:
$ echo "$s" | awk "{print $2, $3, $4}"
Name="abc" Product="xyz" Role="www"
$ echo "$s" | cut -d" " -f2-4
Name="abc" Product="xyz" Role="www"
Vyradiť všetky záznamy, ktoré začínajú aws
môžeš použiť perl
:
$ echo "$s" | perl -lane "foreach (@F) {$s=$s."$_ " unless /^aws/} print "$s""
Name="abc" Product="xyz" Role="www"
alebo
$ echo "$s" | perl -lane "print join(" ", grep {!/^aws/} @F)"
Name="abc" Product="xyz" Role="www"