(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bytes_in_gb)
          op: assign_op.Equal
          rhs: {(1048576)}
          spids: [10]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:host)
          op: assign_op.Equal
          rhs: {(DQ (intuitive.com))}
          spids: [19]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-eq)} {(0)} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:37)
            )
          ]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ('Usage: ') 
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:46)
                      command_list: 
                        (command.CommandList
                          children: [(C {(basename)} {($ Id.VSub_Number '$0')})]
                        )
                    ) (' logfile')
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:54)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:58)
              arg_word: {(1)}
            )
          ]
          spids: [25 39]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-r)} {(DQ ($ Id.VSub_Number '$1'))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:79)
            )
          ]
          action: [
            (command.Simple
              words: [{(echo)} {(DQ ('Error: log file ') ($ Id.VSub_Number '$1') (' not found.'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:92)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:96)
              arg_word: {(1)}
            )
          ]
          spids: [65 81]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:firstdate)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:105)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(head)} {(-1)} {(DQ ($ Id.VSub_Number '$1'))})
                            (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{print $4}' span_id:119))})
                            (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/\\[//' span_id:127))})
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              )
            }
          spids: [103]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:lastdate)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:134)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(tail)} {(-1)} {(DQ ($ Id.VSub_Number '$1'))})
                            (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{print $4}' span_id:148))})
                            (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/\\[//' span_id:156))})
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              )
            }
          spids: [132]
        )
      ]
    )
    (C {(echo)} {(DQ ('Results of analyzing log file ') ($ Id.VSub_Number '$1'))})
    (C {(echo)} {(DQ )})
    (C {(echo)} 
      {
        (DQ ('  Start date: ') 
          (command_sub
            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:178)
            command_list: 
              (command.CommandList
                children: [
                  (command.Pipeline
                    children: [
                      (C {(echo)} {($ Id.VSub_DollarName '$firstdate')})
                      (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/:/ at /' span_id:186))})
                    ]
                    negated: F
                  )
                ]
              )
          )
        )
      }
    )
    (C {(echo)} 
      {
        (DQ ('    End date: ') 
          (command_sub
            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:195)
            command_list: 
              (command.CommandList
                children: [
                  (command.Pipeline
                    children: [
                      (C {(echo)} {($ Id.VSub_DollarName '$lastdate')})
                      (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/:/ at /' span_id:203))})
                    ]
                    negated: F
                  )
                ]
              )
          )
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:hits)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:211)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (command.Simple
                              words: [{(wc)} {(-l)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Less val:'<' span_id:216)
                                  fd: -1
                                  arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                                )
                              ]
                            )
                            (C {(sed)} 
                              {(SQ (Token id:Id.Lit_Chars val:'s/[^[:digit:]]//g' span_id:227))}
                            )
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              )
            }
          spids: [209]
        )
      ]
    )
    (C {(echo)} 
      {
        (DQ ('        Hits: ') 
          (command_sub
            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:237)
            command_list: 
              (command.CommandList
                children: [(C {(nicenumber)} {($ Id.VSub_DollarName '$hits')})]
              )
          ) (' (total accesses)')
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pages)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:248)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(grep)} {(-ivE)} 
                              {(SQ (Token id:Id.Lit_Chars val:'(.txt|.gif|.jpg|.png)' span_id:254))} {(DQ ($ Id.VSub_Number '$1'))}
                            )
                            (C {(wc)} {(-l)})
                            (C {(sed)} 
                              {(SQ (Token id:Id.Lit_Chars val:'s/[^[:digit:]]//g' span_id:272))}
                            )
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              )
            }
          spids: [246]
        )
      ]
    )
    (C {(echo)} 
      {
        (DQ ('   Pageviews: ') 
          (command_sub
            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:282)
            command_list: 
              (command.CommandList
                children: [(C {(nicenumber)} {($ Id.VSub_DollarName '$pages')})]
              )
          ) (' (hits minus graphics)')
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:totalbytes)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:293)
                  command_list: 
                    (command.CommandList
                      children: [
                        (C {(awk)} 
                          {(SQ (Token id:Id.Lit_Chars val:'{sum+=$10} END {print sum}' span_id:297))} {(DQ ($ Id.VSub_Number '$1'))}
                        )
                      ]
                    )
                )
              )
            }
          spids: [291]
        )
      ]
    )
    (C {(/bin/echo)} {(-n)} 
      {
        (DQ (' Transferred: ') 
          (command_sub
            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:313)
            command_list: 
              (command.CommandList
                children: [(C {(nicenumber)} {($ Id.VSub_DollarName '$totalbytes')})]
              )
          ) (' bytes ')
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$totalbytes')} {(-gt)} 
                  {($ Id.VSub_DollarName '$bytes_in_gb')} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:334)
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ('(') 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:343)
                    command_list: 
                      (command.CommandList
                        children: [
                          (C {(scriptbc)} {($ Id.VSub_DollarName '$totalbytes')} {(/)} 
                            {($ Id.VSub_DollarName '$bytes_in_gb')}
                          )
                        ]
                      )
                  ) (' GB)')
                )
              }
            )
          ]
          spids: [322 336]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$totalbytes')} {(-gt)} {(1024)} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:367)
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ('(') 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:376)
                    command_list: 
                      (command.CommandList
                        children: [
                          (C {(scriptbc)} {($ Id.VSub_DollarName '$totalbytes')} {(/)} {(1024)})
                        ]
                      )
                  ) (' MB)')
                )
              }
            )
          ]
          spids: [355 369]
        )
      ]
      else_action: [(C {(echo)} {(DQ )})]
    )
    (C {(echo)} {(DQ )})
    (C {(echo)} {(DQ ('The ten most popular pages were:'))})
    (command.Pipeline
      children: [
        (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{print $7}' span_id:418))} 
          {(DQ ($ Id.VSub_Number '$1'))}
        )
        (C {(grep)} {(-ivE)} {(SQ (Token id:Id.Lit_Chars val:'(.gif|.jpg|.png)' span_id:432))})
        (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/\\/$//g' span_id:442))})
        (C {(sort)})
        (C {(uniq)} {(-c)})
        (C {(sort)} {(-rn)})
        (C {(head)} {(-10)})
      ]
      negated: F
    )
    (C {(echo)} {(DQ )})
    (C {(echo)} {(DQ ('The ten most common referrer URLs were:'))})
    (command.Pipeline
      children: [
        (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{print $11}' span_id:486))} 
          {(DQ ($ Id.VSub_Number '$1'))}
        )
        (C {(grep)} {(-vE)} 
          {
            (DQ ('(^') 
              (word_part.EscapedLiteral
                token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:503)
              ) (-) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:505)) 
              (Id.Lit_Other '$') ('|/www.') ($ Id.VSub_DollarName '$host') ('|/') ($ Id.VSub_DollarName '$host') (')')
            )
          }
        )
        (C {(sort)})
        (C {(uniq)} {(-c)})
        (C {(sort)} {(-rn)})
        (C {(head)} {(-10)})
      ]
      negated: F
    )
    (C {(echo)} {(DQ )})
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:544) arg_word:{(0)})
  ]
)