:33,61 !sort

Sort specific lines while editing within vi

Sort lines within vi editor. In this example sort lines 33-61 and lines 4-9 asciibetically.
Sample Output
  1 a
  2 g
  3 y
  4 d
  5 h
  6 j
  7 k
  8 r
  9 w
 10 
~                                                                               
:4,9 !sort

6
By: greggster
2011-05-06 06:10:05

These Might Interest You

  • The -i option in sed allows in-place editing of the input file. Replace myexpression with any regular expression. /expr/d syntax means if the expression matches then delete the line. You can reverse the functionality to keep matching lines only by using: sed -i -n '/myexpression/p' /path/to/file.txt


    11
    sed -i '/myexpression/d' /path/to/file.txt
    jgc · 2009-11-09 11:40:45 2
  • Great for moves, re-installs etc since it is not version specific yet is architecture specific. Centos yum list is well know for wrapping lines . Show Sample Output


    0
    yum list installed| awk '{print $1}'| grep -e "x86" -e "noarch" | grep -v -e '^@'| sort
    serverwholesale · 2014-08-06 23:13:24 0
  • Often, when sorting you want the sort to ignore extraneous characters. The b, d, and f tell sort to ignore leading blanks, use 'dictionary order' (ignore punctuation), and ignore (fold) case. Add a "u" if you only want one copy of duplicate lines. This is a great command to use within vim to sort lines of text, using !}sort -bdf Show Sample Output


    2
    sort -bdf
    sysadmn · 2009-02-26 19:55:41 0
  • "nl -ba" numbers all lines in the file (including empty lines), "sort -nr" sorts the lines in descending order, and the "cut" command finally removes the line numbers again.


    0
    nl -ba FILE | sort -nr | cut -f2-
    maher · 2012-06-24 23:07:06 1
  • The vi key sequence "!}" will feed the block of lines from the current position to the next blank line to the command provided: in this case "sort -nut. -k 1,1 -k 2,2 -k 3,3 -k 4,4". The sort is ascending, numeric (-n), removing duplicates (-u), using "." as key delimiter (-t ."). The "-nut." is a memorable mnemonic :-). The same command (less the "!}") can, of course, be used from command line to sort a file of IP addresses in a text file. In the command line version, I found it also useful to remove blank lines and comment lines thusly: < IPaddresses.txt sed -e "/^#/d" -e "/^$/d" | sort -nut. -k 1,1 -k 2,2 -k 3,3 -k 4,4 # sort IP addresses


    0
    !}sort -nut. -k 1,1 -k 2,2 -k 3,3 -k 4,4
    mpb · 2012-08-12 16:16:24 0
  • This provides a way to sort output based on the length of the line, so that shorter lines appear before longer lines. It's an addon to the sort that I've wanted for years, sometimes it's very useful. Taken from my http://www.askapache.com/linux-unix/bash_profile-functions-advanced-shell.html Show Sample Output


    2
    sortwc () { local L;while read -r L;do builtin printf "${#L}@%s\n" "$L";done|sort -n|sed -u 's/^[^@]*@//'; }
    AskApache · 2010-05-20 20:13:52 1

What Others Think

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands



Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: