Skip to content

Instantly share code, notes, and snippets.

@isaactzab
Last active November 8, 2019 16:44
Show Gist options
  • Select an option

  • Save isaactzab/db40c7d7a96c1ca0eae34767ffca4d14 to your computer and use it in GitHub Desktop.

Select an option

Save isaactzab/db40c7d7a96c1ca0eae34767ffca4d14 to your computer and use it in GitHub Desktop.

Revisions

  1. isaactzab revised this gist Nov 8, 2019. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions bash_array_operations.md
    Original file line number Diff line number Diff line change
    @@ -71,7 +71,7 @@ echo "${orig[@]}"$'\n'"${array[@]}"


    ## delete a single leading or trailing space from any array item
    ## cf. http://codesnippets.joyent.com/posts/show/1816
    cf. http://codesnippets.joyent.com/posts/show/1816
    ```array=( " foo" "bar " baz )
    array=( "${array[@]/# /}" )
    array=( "${array[@]/% /}" )
    @@ -80,8 +80,8 @@ echo "${orig[@]}"$'\n'"${array[@]}"


    ## further Bash array tips
    ## for positional parameters also see:
    ## http://codesnippets.joyent.com/posts/show/1706
    for positional parameters also see:
    http://codesnippets.joyent.com/posts/show/1706

    ## get the first array item
    ```array=( foo bar baz )
  2. isaactzab revised this gist Nov 8, 2019. 1 changed file with 27 additions and 14 deletions.
    41 changes: 27 additions & 14 deletions bash_array_operations.md
    Original file line number Diff line number Diff line change
    @@ -13,61 +13,70 @@ echo "${orig[@]}"$'\n'"${array[@]}"
    ```orig=( foo babar baz )
    array=( foo babar baz )
    array=( "${array[@]/ba/TT}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```



    `orig=( foo bar baz `
    `orig=( foo bar baz ) `

    ## append "foo" to every array item
    ```array=( foo bar baz )
    array=( "${array[@]/%/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## replace last char "r" with "foo"
    ```array=( foo bar baz )
    array=( "${array[@]/%r/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## prepend "foo" to every array item
    ```array=( foo bar baz )
    array=( "${array[@]/#/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## replace "ba" at the beginning with "foo"
    ```array=( foo bar baz )
    array=( "${array[@]/#ba/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## replace any array item matching "b*" with "foo"
    ```array=( foo bar baz )
    array=( "${array[@]/%b*/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## replace any array item matching "*z" with "foo"
    ```array=( foo bar baz )
    array=( "${array[@]/#*z/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## replace any array item matching "*a*" with "foo"
    ```array=( foo bar baz )
    #array=( "${array[@]/%*a*/foo}" )
    array=( "${array[@]/#*a*/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## delete a single leading or trailing space from any array item
    ## cf. http://codesnippets.joyent.com/posts/show/1816
    ```array=( " foo" "bar " baz )
    array=( "${array[@]/# /}" )
    array=( "${array[@]/% /}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## further Bash array tips
    @@ -77,22 +86,26 @@ echo "${orig[@]}"$'\n'"${array[@]}"```
    ## get the first array item
    ```array=( foo bar baz )
    array=( "${array[@]:0:1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## get the last array item
    ```array=( foo bar baz )
    array=( "${array[@]: -1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## get all array items after the first one
    ```array=( foo bar baz )
    array=( "${array[@]:1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```


    ## get the second array item
    ```array=( foo bar baz )
    array=( "${array[@]:1:1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"```
    echo "${orig[@]}"$'\n'"${array[@]}"
    ```
  3. isaactzab revised this gist Nov 8, 2019. 1 changed file with 26 additions and 26 deletions.
    52 changes: 26 additions & 26 deletions bash_array_operations.md
    Original file line number Diff line number Diff line change
    @@ -10,89 +10,89 @@ echo "${orig[@]}"$'\n'"${array[@]}"
    ```

    ## replace only the first "ba" substring with "TT" in every array item
    `orig=( foo babar baz )
    ```orig=( foo babar baz )
    array=( foo babar baz )
    array=( "${array[@]/ba/TT}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    `orig=( foo bar baz `
    ## append "foo" to every array item
    `array=( foo bar baz )
    ```array=( foo bar baz )
    array=( "${array[@]/%/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## replace last char "r" with "foo"
    `array=( foo bar baz )
    ```array=( foo bar baz )
    array=( "${array[@]/%r/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## prepend "foo" to every array item
    `array=( foo bar baz )
    ```array=( foo bar baz )
    array=( "${array[@]/#/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## replace "ba" at the beginning with "foo"
    `array=( foo bar baz )
    ```array=( foo bar baz )
    array=( "${array[@]/#ba/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## replace any array item matching "b*" with "foo"
    `array=( foo bar baz )
    ```array=( foo bar baz )
    array=( "${array[@]/%b*/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## replace any array item matching "*z" with "foo"
    `array=( foo bar baz )
    ```array=( foo bar baz )
    array=( "${array[@]/#*z/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## replace any array item matching "*a*" with "foo"
    `array=( foo bar baz )
    ```array=( foo bar baz )
    #array=( "${array[@]/%*a*/foo}" )
    array=( "${array[@]/#*a*/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## delete a single leading or trailing space from any array item
    ## cf. http://codesnippets.joyent.com/posts/show/1816
    `array=( " foo" "bar " baz )
    ```array=( " foo" "bar " baz )
    array=( "${array[@]/# /}" )
    array=( "${array[@]/% /}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## further Bash array tips
    ## for positional parameters also see:
    ## http://codesnippets.joyent.com/posts/show/1706
    ## get the first array item
    `array=( foo bar baz )
    ```array=( foo bar baz )
    array=( "${array[@]:0:1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## get the last array item
    `array=( foo bar baz )
    ```array=( foo bar baz )
    array=( "${array[@]: -1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## get all array items after the first one
    `array=( foo bar baz )
    ```array=( foo bar baz )
    array=( "${array[@]:1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
    ## get the second array item
    `array=( foo bar baz )
    ```array=( foo bar baz )
    array=( "${array[@]:1:1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`
    echo "${orig[@]}"$'\n'"${array[@]}"```
  4. isaactzab revised this gist Nov 8, 2019. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions bash_array_operations.md
    Original file line number Diff line number Diff line change
    @@ -3,11 +3,11 @@ Original post from: http://codesnippets.joyent.com/posts/show/1826


    ## replace any "ba" substring with "TT" in every array item
    `orig=( foo babar baz )
    ```orig=( foo babar baz )
    array=( foo babar baz )
    array=( "${array[@]//ba/TT}" )
    echo "${orig[@]}"$'\n'"${array[@]}"
    `
    ```

    ## replace only the first "ba" substring with "TT" in every array item
    `orig=( foo babar baz )
  5. isaactzab created this gist Nov 8, 2019.
    98 changes: 98 additions & 0 deletions bash_array_operations.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,98 @@
    # Modify bash array items without looping
    Original post from: http://codesnippets.joyent.com/posts/show/1826


    ## replace any "ba" substring with "TT" in every array item
    `orig=( foo babar baz )
    array=( foo babar baz )
    array=( "${array[@]//ba/TT}" )
    echo "${orig[@]}"$'\n'"${array[@]}"
    `

    ## replace only the first "ba" substring with "TT" in every array item
    `orig=( foo babar baz )
    array=( foo babar baz )
    array=( "${array[@]/ba/TT}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`



    `orig=( foo bar baz `

    ## append "foo" to every array item
    `array=( foo bar baz )
    array=( "${array[@]/%/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## replace last char "r" with "foo"
    `array=( foo bar baz )
    array=( "${array[@]/%r/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## prepend "foo" to every array item
    `array=( foo bar baz )
    array=( "${array[@]/#/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## replace "ba" at the beginning with "foo"
    `array=( foo bar baz )
    array=( "${array[@]/#ba/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## replace any array item matching "b*" with "foo"
    `array=( foo bar baz )
    array=( "${array[@]/%b*/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## replace any array item matching "*z" with "foo"
    `array=( foo bar baz )
    array=( "${array[@]/#*z/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## replace any array item matching "*a*" with "foo"
    `array=( foo bar baz )
    #array=( "${array[@]/%*a*/foo}" )
    array=( "${array[@]/#*a*/foo}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## delete a single leading or trailing space from any array item
    ## cf. http://codesnippets.joyent.com/posts/show/1816
    `array=( " foo" "bar " baz )
    array=( "${array[@]/# /}" )
    array=( "${array[@]/% /}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## further Bash array tips
    ## for positional parameters also see:
    ## http://codesnippets.joyent.com/posts/show/1706

    ## get the first array item
    `array=( foo bar baz )
    array=( "${array[@]:0:1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## get the last array item
    `array=( foo bar baz )
    array=( "${array[@]: -1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## get all array items after the first one
    `array=( foo bar baz )
    array=( "${array[@]:1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`


    ## get the second array item
    `array=( foo bar baz )
    array=( "${array[@]:1:1}" )
    echo "${orig[@]}"$'\n'"${array[@]}"`