commit
c7ca05f2fb
3 changed files with 62 additions and 0 deletions
@ -0,0 +1,20 @@
|
||||
MIT License |
||||
Copyright (c) 2018 Stephen McQuay |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of |
||||
this software and associated documentation files (the "Software"), to deal in |
||||
the Software without restriction, including without limitation the rights to |
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies |
||||
of the Software, and to permit persons to whom the Software is furnished to do |
||||
so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in all |
||||
copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
SOFTWARE. |
@ -0,0 +1,3 @@
|
||||
# ipsort |
||||
|
||||
Numerically sort lines containing ip addresses. |
@ -0,0 +1,39 @@
|
||||
// command svsort sorts lines of text by semver at beginning of line
|
||||
package main |
||||
|
||||
import ( |
||||
"bufio" |
||||
"bytes" |
||||
"fmt" |
||||
"log" |
||||
"net" |
||||
"os" |
||||
"sort" |
||||
) |
||||
|
||||
type lines []string |
||||
|
||||
func (l lines) Len() int { return len(l) } |
||||
func (l lines) Swap(i, j int) { l[i], l[j] = l[j], l[i] } |
||||
func (l lines) Less(i, j int) bool { |
||||
a, b := net.ParseIP(l[i]), net.ParseIP(l[j]) |
||||
return bytes.Compare(a, b) < 0 |
||||
} |
||||
|
||||
func main() { |
||||
s := bufio.NewScanner(os.Stdin) |
||||
|
||||
ls := lines{} |
||||
for s.Scan() { |
||||
ls = append(ls, s.Text()) |
||||
} |
||||
|
||||
if err := s.Err(); err != nil { |
||||
log.Fatalf("scan: %v") |
||||
} |
||||
|
||||
sort.Sort(ls) |
||||
for _, l := range ls { |
||||
fmt.Printf("%v\n", l) |
||||
} |
||||
} |
Loading…
Reference in new issue