Answers.Body: <p>Here's a simple awk approach:</p>
  
  <pre><code>awk '{if(/^&gt;/){split($1,a,"[|.]")}print &gt;&gt; a[2]".fa"}' Protein_FASTA.txt 
  </code></pre>
  
  <p>Or, more concisely, just:</p>
  
  <pre><code>awk '/^&gt;/{split($1,a,"[|.]")}{print &gt;&gt; a[2]".fa"}' Protein_FASTA.txt 
  </code></pre>
  
  <p>When run on the file linked to in your question, that results in the following files:</p>
  
  <pre><code>$ ls
  AP014650.fa  CP003848.fa  CP007713.fa  CP012005.fa  CP015122.fa  CP017645.fa  CP018422.fa  CP020594.fa  CP023021.fa  CP024577.fa  CP026712.fa  CP027245.fa  CP030108.fa
  CP000522.fa  CP003850.fa  CP007714.fa  CP012007.fa  CP015365.fa  CP017647.fa  CP018678.fa  CP020596.fa  CP023023.fa  CP024578.fa  CP026748.fa  CP027529.fa  CP030109.fa
  CP000523.fa  CP003887.fa  CP008707.fa  CP012008.fa  CP015366.fa  CP017649.fa  CP018679.fa  CP021322.fa  CP023024.fa  CP025267.fa  CP026749.fa  CP027531.fa  CU459137.fa
  CP000864.fa  CP003888.fa  CP008708.fa  CP012953.fa  CP015484.fa  CP017651.fa  CP019218.fa  CP021327.fa  CP023025.fa  CP026126.fa  CP027121.fa  CP027532.fa  CU459138.fa
  CP000865.fa  CP003907.fa  CP008709.fa  CP012954.fa  CP015485.fa  CP017653.fa  CP020573.fa  CP021348.fa  CP023027.fa  CP026127.fa  CP027122.fa  CP027608.fa  CU459139.fa
  CP001183.fa  CP003908.fa  CP008850.fa  CP012955.fa  CP015486.fa  CP017655.fa  CP020575.fa  CP021783.fa  CP023028.fa  CP026128.fa  CP027124.fa  CP027609.fa  CU459140.fa
  CP001922.fa  CP003968.fa  CP008851.fa  CP012956.fa  CP016296.fa  CP017657.fa  CP020576.fa  CP021784.fa  CP023030.fa  CP026129.fa  CP027179.fa  CP027610.fa  JN377410.fa
  CP001923.fa  CP004359.fa  CP010398.fa  CP013925.fa  CP016297.fa  CP018144.fa  CP020577.fa  CP021785.fa  CP023032.fa  CP026339.fa  CP027180.fa  CP029570.fa  LN865144.fa
  CP001938.fa  CP006769.fa  CP010399.fa  CP014216.fa  CP016299.fa  CP018255.fa  CP020580.fa  CP021786.fa  CP023033.fa  CP026340.fa  CP027181.fa  CP029571.fa  LN997847.fa
  CP002523.fa  CP007578.fa  CP010400.fa  CP014217.fa  CP016301.fa  CP018257.fa  CP020585.fa  CP021787.fa  CP023035.fa  CP026705.fa  CP027182.fa  CP029572.fa  LT594096.fa
  CP002524.fa  CP007579.fa  CP010780.fa  CP014292.fa  CP016302.fa  CP018333.fa  CP020589.fa  CP022284.fa  CP024125.fa  CP026706.fa  CP027243.fa  CP029573.fa  Protein_FASTA.txt
  CP003501.fa  CP007580.fa  CP010782.fa  CP014293.fa  CP017643.fa  CP018334.fa  CP020593.fa  CP022285.fa  CP024419.fa  CP026708.fa  CP027244.fa  CP030107.fa
  </code></pre>
  
  <h3>Explanation</h3>
  
  <ul>
  <li><code>if(/^&gt;/){split($1,a,"[|.]")</code> : if this line starts with a <code>&gt;</code>, split the first field on any occurrence of either <code>|</code> or <code>.</code> and save the results in the array <code>a</code>. Since your header lines all start with <code>&gt;lcl|</code>, then the string you are looking for and a <code>.</code>, this means that the second value in the <code>a</code> array will be your target string. </li>
  <li><code>print &gt;&gt; a[2]".fa"</code> : print (append, <code>&gt;&gt;</code>) the current line to a file called "whatever the name of this sequence is" (<code>a[2]</code>) and <code>.fa</code>. This is run for every line in your input file. <strong><em>Note that if you run the same command again, you will need to first delete the files created the first time</em></strong>. If you don't, because I am using the <code>&gt;&gt;</code>, you will just append to the existing files. </li>
  </ul>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T15:15:35.057Z
Answers.Text: I thought about perl -e  one-liner ... but I don't think a multiple file output is doable. The awk one-liner is cool.
Answers.UserDisplayName: M__
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T16:07:20.847Z
Answers.Text: Personally, I would have used a "_" along with "." and "|", but who am I. The small advantage of a script is that if its rerun it will clobber the old run output, without fear of appending.
Answers.UserDisplayName: M__
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T16:17:53.663Z
Answers.Text: @MichaelG. you can do it easily enough in perl, it's just slightly more cumbersome since you need to explicitly open and close each file: `perl -ne 'if(/>.+?\|(.*?)\./){$name=$1; }open(my $fh, ">>","$name.fa"); print $fh "$_"; close($fh)' Protein_FASTA.txt`. I didn't include the `_` because the OP seemed to want the text before the version (the `.N`) to be the file name. I'd have used the `_` myself too.
Answers.UserDisplayName: terdon
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T16:20:58.830Z
Answers.Text: Thanks! I had no idea a file handle could be opened from "perl -e" ... I prefer awk code for this one.
Answers.UserDisplayName: M__
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T16:21:42.757Z
Answers.Text: wow so many solutions...let me run this..
Answers.UserDisplayName: kcm
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T16:26:50.793Z
Answers.Text: thanks for the detailed explanation each line of the code..really appreciate it
Answers.UserDisplayName: kcm
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T16:40:16.743Z
Answers.Text: You're welcome :). @MichaelG. note that I had a mistake in the first version of that perl one-liner. You need `>>`, not `>` (I've edited the comment) and it still has the same issue with existing files. The only way around that is to store everything in memory and only write at the end: `perl -ne 'if(/>.+?\|(.*?)\./){$name=$1;}push @{$k{$name}},$_; END{for $name (keys(%k)){open(my $fh, ">","$name.fa"); print $fh @{$k{$name}}; close($fh)}}' Protein_FASTA.txt`
Answers.UserDisplayName: terdon
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T16:43:38.627Z
Answers.Text: I suggest replacing the `if (…){…}` block with the more awk-ish `/^>/ {split($1, a, "[|.]")}`, which simplified the actual print look to just `{print >> a[2] ".fa"}`.
Answers.UserDisplayName: Konrad Rudolph
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T16:56:28.343Z
Answers.Text: @KonradRudolph that's how I would do it, yes. I used this version since I thought it would be easier for the OP to understand since it's more explicit and only 4 characters longer. But OK, I added the shorter version too.
Answers.UserDisplayName: terdon
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T17:54:23.857Z
Answers.Text: @terdon I commented because I find the shorter version *more* readable (and I would argue that it is objectively so). Admittedly it does require knowing a bit about awk but that shouldn’t be an impediment.
Answers.UserDisplayName: Konrad Rudolph
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T18:03:10.017Z
Answers.Text: @krushnachChandra ... its a culture. Make a code, condense a code and be more perlish, awkish or pythonic (as above).
Answers.UserDisplayName: M__
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T18:28:12.717Z
Answers.Text: I agree with @terdon flow control within one-line is minimised outside awk. This  awkish-ness so takes time to grasp.
Answers.UserDisplayName: M__
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-18T14:39:53.417Z
Answers.LastActivityDate: 2019-03-18T16:55:45.187Z
Answers.LastEditDate: 2019-03-18T16:55:45.187Z
Answers.UserDisplayName: terdon
Body: <p>I have to split this fasta files into smaller files and write them into individual files my files  </p>
  
  <pre><code>&gt;lcl|CP000522.1_prot_ABO13860.1_1 [locus_tag=A1S_3471] [protein=hypothetical protein] [protein_id=ABO13860.1] [location=1..957] [gbkey=CDS]
  &gt;lcl|CP000522.1_prot_ABO13850.1_2 [locus_tag=A1S_3461] [protein=DNA replication protein] [protein_id=ABO13850.1] [location=950..1504] [gbkey=CDS]
  &gt;lcl|CP000522.1_prot_ABO13851.1_3 [locus_tag=A1S_3462] [protein=hypothetical protein] [protein_id=ABO13851.1] [location=complement(2523..3437)] [gbkey=CDS]
  &gt;lcl|CP000522.1_prot_ABO13852.1_4 [locus_tag=A1S_3463] [protein=YPPCP.09C-like protein] [protein_id=ABO13852.1] [location=3538..4788] [gbkey=CDS]
  &gt;lcl|CP000522.1_prot_ABO13853.1_5 [locus_tag=A1S_3464] [protein=Cro-like protein] [protein_id=ABO13853.1] [location=5039..5629] [gbkey=CDS]
  &gt;lcl|CP000522.1_prot_ABO13854.1_6 [locus_tag=A1S_3465] [protein=hypothetical protein] [protein_id=ABO13854.1] [location=complement(6340..6906)] [gbkey=CDS]
  &gt;lcl|CP000522.1_prot_ABO13855.1_7 [locus_tag=A1S_3466] [protein=Resolvase] [protein_id=ABO13855.1] [location=complement(7074..7685)] [gbkey=CDS]
  &gt;lcl|CP000522.1_prot_ABO13856.1_8 [locus_tag=A1S_3467] [protein=hypothetical protein] [protein_id=ABO13856.1] [location=complement(8602..9732)] [gbkey=CDS]
  &gt;lcl|CP000522.1_prot_ABO13857.1_9 [locus_tag=A1S_3468] [protein=putative lipoprotein] [protein_id=ABO13857.1] [location=complement(10072..10374)] [gbkey=CDS]
  &gt;lcl|CP000522.1_prot_ABO13858.1_10 [locus_tag=A1S_3469] [protein=Diaminopimelate decarboxylase] [protein_id=ABO13858.1] [location=complement(10367..10723)] [gbkey=CDS]
  &gt;lcl|CP000522.1_prot_ABO13859.1_11 [locus_tag=A1S_3470] [protein=regulatory protein LysR] [protein_id=ABO13859.1] [location=complement(12076..12444)] [gbkey=CDS]
  </code></pre>
  
  <p>The other pattern is </p>
  
  <pre><code>&gt;lcl|CP000523.1_prot_ABO13861.1_1 [locus_tag=A1S_3472] [protein=DNA replication protein] [protein_id=ABO13861.1] [location=1..951] [gbkey=CDS]
  &gt;lcl|CP000523.1_prot_ABO13862.1_2 [locus_tag=A1S_3473] [protein=hypothetical protein] [protein_id=ABO13862.1] [location=3048..4262] [gbkey=CDS]
  &gt;lcl|CP000523.1_prot_ABO13863.1_3 [locus_tag=A1S_3474] [protein=hypothetical protein] [protein_id=ABO13863.1] [location=4357..5133] [gbkey=CDS]
  &gt;lcl|CP000523.1_prot_ABO13864.1_4 [locus_tag=A1S_3475] [protein=hypothetical protein] [protein_id=ABO13864.1] [location=6197..8608] [gbkey=CDS]
  &gt;lcl|CP000523.1_prot_ABO13865.1_5 [locus_tag=A1S_3476] [protein=secretory lipase] [protein_id=ABO13865.1] [location=8705..9403] [gbkey=CDS]
  </code></pre>
  
  <p>So now my idea is how do i parse and write them into individual files such that CP000522 output written to one file and CP000523 written to another file so forth and so on.</p>
  
  <p>So far what i understand is i have to match the pattern after >lcl 
  so there are other patterns like "<code>LN997847</code>" in the file </p>
  
  <p>Not sure how to proceed tried it in R but failed </p>
  
  <p>it can be done with awk and sed which i tried but i can;t define something that parse all header like takes into account <code>CP</code> as well as <code>LN</code> .</p>
  
  <p>Any suggestion or help would be highly appreciated .
  here is my <a href="https://drive.google.com/open?id=1TpTOYTilUVTvWCXx9BBUsG2g67t86sb_" rel="noreferrer">file</a> </p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-03-18T14:47:41.457Z
Comments.Text: This is very easy with a bit of scripting one script will do it all. We do have R experts here (best solution)....Otherwise I'll post the code. How do you want each file named (important no matter which approach you take)?
Comments.UserDisplayName: M__
Tags: <fasta><awk><shell>
Title: Splitting fasta file into smaller files based on header pattern
ThreadText: # Splitting fasta file into smaller files based on header pattern
  
  (Asked by: username_0 on 2019-03-18)
  
  I have to split this fasta files into smaller files and write them into individual files my files
  
  ```
  >lcl|CP000522.1_prot_ABO13860.1_1 [locus_tag=A1S_3471] [protein=hypothetical protein] [protein_id=ABO13860.1] [location=1..957] [gbkey=CDS]
  >lcl|CP000522.1_prot_ABO13850.1_2 [locus_tag=A1S_3461] [protein=DNA replication protein] [protein_id=ABO13850.1] [location=950..1504] [gbkey=CDS]
  >lcl|CP000522.1_prot_ABO13851.1_3 [locus_tag=A1S_3462] [protein=hypothetical protein] [protein_id=ABO13851.1] [location=complement(2523..3437)] [gbkey=CDS]
  >lcl|CP000522.1_prot_ABO13852.1_4 [locus_tag=A1S_3463] [protein=YPPCP.09C-like protein] [protein_id=ABO13852.1] [location=3538..4788] [gbkey=CDS]
  >lcl|CP000522.1_prot_ABO13853.1_5 [locus_tag=A1S_3464] [protein=Cro-like protein] [protein_id=ABO13853.1] [location=5039..5629] [gbkey=CDS]
  >lcl|CP000522.1_prot_ABO13854.1_6 [locus_tag=A1S_3465] [protein=hypothetical protein] [protein_id=ABO13854.1] [location=complement(6340..6906)] [gbkey=CDS]
  >lcl|CP000522.1_prot_ABO13855.1_7 [locus_tag=A1S_3466] [protein=Resolvase] [protein_id=ABO13855.1] [location=complement(7074..7685)] [gbkey=CDS]
  >lcl|CP000522.1_prot_ABO13856.1_8 [locus_tag=A1S_3467] [protein=hypothetical protein] [protein_id=ABO13856.1] [location=complement(8602..9732)] [gbkey=CDS]
  >lcl|CP000522.1_prot_ABO13857.1_9 [locus_tag=A1S_3468] [protein=putative lipoprotein] [protein_id=ABO13857.1] [location=complement(10072..10374)] [gbkey=CDS]
  >lcl|CP000522.1_prot_ABO13858.1_10 [locus_tag=A1S_3469] [protein=Diaminopimelate decarboxylase] [protein_id=ABO13858.1] [location=complement(10367..10723)] [gbkey=CDS]
  >lcl|CP000522.1_prot_ABO13859.1_11 [locus_tag=A1S_3470] [protein=regulatory protein LysR] [protein_id=ABO13859.1] [location=complement(12076..12444)] [gbkey=CDS]
  
  ```
  
  The other pattern is
  
  ```
  >lcl|CP000523.1_prot_ABO13861.1_1 [locus_tag=A1S_3472] [protein=DNA replication protein] [protein_id=ABO13861.1] [location=1..951] [gbkey=CDS]
  >lcl|CP000523.1_prot_ABO13862.1_2 [locus_tag=A1S_3473] [protein=hypothetical protein] [protein_id=ABO13862.1] [location=3048..4262] [gbkey=CDS]
  >lcl|CP000523.1_prot_ABO13863.1_3 [locus_tag=A1S_3474] [protein=hypothetical protein] [protein_id=ABO13863.1] [location=4357..5133] [gbkey=CDS]
  >lcl|CP000523.1_prot_ABO13864.1_4 [locus_tag=A1S_3475] [protein=hypothetical protein] [protein_id=ABO13864.1] [location=6197..8608] [gbkey=CDS]
  >lcl|CP000523.1_prot_ABO13865.1_5 [locus_tag=A1S_3476] [protein=secretory lipase] [protein_id=ABO13865.1] [location=8705..9403] [gbkey=CDS]
  
  ```
  
  So now my idea is how do i parse and write them into individual files such that CP000522 output written to one file and CP000523 written to another file so forth and so on.
  
  So far what i understand is i have to match the pattern after >lcl
  so there are other patterns like "`LN997847`" in the file
  
  Not sure how to proceed tried it in R but failed
  
  it can be done with awk and sed which i tried but i can;t define something that parse all header like takes into account `CP` as well as `LN` .
  
  Any suggestion or help would be highly appreciated .
  here is my [file](https://drive.google.com/open?id=1TpTOYTilUVTvWCXx9BBUsG2g67t86sb_)
  
  **Tags:** fasta, awk, shell
  
  > **Comments:**
  > **username_1**: This is very easy with a bit of scripting one script will do it all. We do have R experts here (best solution)....Otherwise I'll post the code. How do you want each file named (important no matter which approach you take)?  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_2 on 2019-03-18. Score: 9 | Accepted answer
  
  Here's a simple awk approach:
  
  ```
  awk '{if(/^>/){split($1,a,"[|.]")}print >> a[2]".fa"}' Protein_FASTA.txt 
  
  ```
  
  Or, more concisely, just:
  
  ```
  awk '/^>/{split($1,a,"[|.]")}{print >> a[2]".fa"}' Protein_FASTA.txt 
  
  ```
  
  When run on the file linked to in your question, that results in the following files:
  
  ```
  $ ls
  AP014650.fa  CP003848.fa  CP007713.fa  CP012005.fa  CP015122.fa  CP017645.fa  CP018422.fa  CP020594.fa  CP023021.fa  CP024577.fa  CP026712.fa  CP027245.fa  CP030108.fa
  CP000522.fa  CP003850.fa  CP007714.fa  CP012007.fa  CP015365.fa  CP017647.fa  CP018678.fa  CP020596.fa  CP023023.fa  CP024578.fa  CP026748.fa  CP027529.fa  CP030109.fa
  CP000523.fa  CP003887.fa  CP008707.fa  CP012008.fa  CP015366.fa  CP017649.fa  CP018679.fa  CP021322.fa  CP023024.fa  CP025267.fa  CP026749.fa  CP027531.fa  CU459137.fa
  CP000864.fa  CP003888.fa  CP008708.fa  CP012953.fa  CP015484.fa  CP017651.fa  CP019218.fa  CP021327.fa  CP023025.fa  CP026126.fa  CP027121.fa  CP027532.fa  CU459138.fa
  CP000865.fa  CP003907.fa  CP008709.fa  CP012954.fa  CP015485.fa  CP017653.fa  CP020573.fa  CP021348.fa  CP023027.fa  CP026127.fa  CP027122.fa  CP027608.fa  CU459139.fa
  CP001183.fa  CP003908.fa  CP008850.fa  CP012955.fa  CP015486.fa  CP017655.fa  CP020575.fa  CP021783.fa  CP023028.fa  CP026128.fa  CP027124.fa  CP027609.fa  CU459140.fa
  CP001922.fa  CP003968.fa  CP008851.fa  CP012956.fa  CP016296.fa  CP017657.fa  CP020576.fa  CP021784.fa  CP023030.fa  CP026129.fa  CP027179.fa  CP027610.fa  JN377410.fa
  CP001923.fa  CP004359.fa  CP010398.fa  CP013925.fa  CP016297.fa  CP018144.fa  CP020577.fa  CP021785.fa  CP023032.fa  CP026339.fa  CP027180.fa  CP029570.fa  LN865144.fa
  CP001938.fa  CP006769.fa  CP010399.fa  CP014216.fa  CP016299.fa  CP018255.fa  CP020580.fa  CP021786.fa  CP023033.fa  CP026340.fa  CP027181.fa  CP029571.fa  LN997847.fa
  CP002523.fa  CP007578.fa  CP010400.fa  CP014217.fa  CP016301.fa  CP018257.fa  CP020585.fa  CP021787.fa  CP023035.fa  CP026705.fa  CP027182.fa  CP029572.fa  LT594096.fa
  CP002524.fa  CP007579.fa  CP010780.fa  CP014292.fa  CP016302.fa  CP018333.fa  CP020589.fa  CP022284.fa  CP024125.fa  CP026706.fa  CP027243.fa  CP029573.fa  Protein_FASTA.txt
  CP003501.fa  CP007580.fa  CP010782.fa  CP014293.fa  CP017643.fa  CP018334.fa  CP020593.fa  CP022285.fa  CP024419.fa  CP026708.fa  CP027244.fa  CP030107.fa
  
  ```
  
  ### Explanation
  
  * `if(/^>/){split($1,a,"[|.]")` : if this line starts with a `>`, split the first field on any occurrence of either `|` or `.` and save the results in the array `a`. Since your header lines all start with `>lcl|`, then the string you are looking for and a `.`, this means that the second value in the `a` array will be your target string.
  * `print >> a[2]".fa"` : print (append, `>>`) the current line to a file called "whatever the name of this sequence is" (`a[2]`) and `.fa`. This is run for every line in your input file. ***Note that if you run the same command again, you will need to first delete the files created the first time***. If you don't, because I am using the `>>`, you will just append to the existing files.
  
  > **Comments:**
  > **username_1**: I thought about perl -e  one-liner ... but I don't think a multiple file output is doable. The awk one-liner is cool.  
  > **username_1**: Personally, I would have used a "_" along with "." and "|", but who am I. The small advantage of a script is that if its rerun it will clobber the old run output, without fear of appending.  
  > **username_2**: @MichaelG. you can do it easily enough in perl, it's just slightly more cumbersome since you need to explicitly open and close each file: `perl -ne 'if(/>.+?\|(.*?)\./){$name=$1; }open(my $fh, ">>","$name.fa"); print $fh "$_"; close($fh)' Protein_FASTA.txt`. I didn't include the `_` because the OP seemed to want the text before the version (the `.N`) to be the file name. I'd have used the `_` myself too.  
  > **username_1**: Thanks! I had no idea a file handle could be opened from "perl -e" ... I prefer awk code for this one.  
  > **username_0**: wow so many solutions...let me run this..  
  > **username_0**: thanks for the detailed explanation each line of the code..really appreciate it  
  > **username_2**: You're welcome :). @MichaelG. note that I had a mistake in the first version of that perl one-liner. You need `>>`, not `>` (I've edited the comment) and it still has the same issue with existing files. The only way around that is to store everything in memory and only write at the end: `perl -ne 'if(/>.+?\|(.*?)\./){$name=$1;}push @{$k{$name}},$_; END{for $name (keys(%k)){open(my $fh, ">","$name.fa"); print $fh @{$k{$name}}; close($fh)}}' Protein_FASTA.txt`  
  > **username_3**: I suggest replacing the `if (…){…}` block with the more awk-ish `/^>/ {split($1, a, "[|.]")}`, which simplified the actual print look to just `{print >> a[2] ".fa"}`.  
  > **username_2**: @username_3 that's how I would do it, yes. I used this version since I thought it would be easier for the OP to understand since it's more explicit and only 4 characters longer. But OK, I added the shorter version too.  
  > **username_3**: @username_2 I commented because I find the shorter version *more* readable (and I would argue that it is objectively so). Admittedly it does require knowing a bit about awk but that shouldn’t be an impediment.  
  > **username_1**: @krushnachChandra ... its a culture. Make a code, condense a code and be more perlish, awkish or pythonic (as above).  
  > **username_1**: I agree with @username_2 flow control within one-line is minimised outside awk. This  awkish-ness so takes time to grasp.  
  
  ---
  
  