- Community Home
- >
- Servers and Operating Systems
- >
- Operating Systems
- >
- Operating System - HP-UX
- >
- Re: Sort problem
Categories
Company
Local Language
Forums
Discussions
Forums
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
Discussions
Discussions
Discussions
Forums
Forums
Discussions
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Community
Resources
Forums
Blogs
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО03-02-2009 07:33 AM
тАО03-02-2009 07:33 AM
I am trying to sort on the employee number in column 10-19, but I get undesirable results.
File is (file.txt):
1998945 Warble
8 5032 Rebholz
1124688 Barrera
2327703 Rebholz
Result is:
1998945 Warble
8 5032 Rebholz
1124688 Barrera
2327703 Rebholz
Command script is:
export LC_COLLATE=en_US.ISO8859-1
export LC_CTYPE=en_US.ISO8859-1
export LC_MESSAGES=en_US.ISO8859-1
export LC_MONETARY=en_US.ISO8859-1
export LC_NUMERIC=en_US.ISO8859-1
export LC_TIME=en_US.ISO8859-1
sort -t# -k1.10n,1.19n file.txt -o test.sorted
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО03-02-2009 07:39 AM
тАО03-02-2009 07:39 AM
Re: Sort problem
Posting a textual attachment of the input file would be more helpful.
Regards!
...JRF...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО03-02-2009 07:44 AM
тАО03-02-2009 07:44 AM
Re: Sort problem
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО03-02-2009 08:00 AM
тАО03-02-2009 08:00 AM
SolutionYou have unequal numbers of fields as shown with the record with an "8" as the first field.
You could do:
# awk '{if (NF>2) {print $2,$0} else {print $1,$0}}' file|sort -kn1,1|cut -d" " -f2-
...which produces:
8 5032 Rebholz
1124688 Barrera
1998945 Warble
2327703 Rebholz
Regards!
...JRF...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО03-02-2009 08:09 AM
тАО03-02-2009 08:09 AM
Re: Sort problem
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО03-02-2009 08:17 AM
тАО03-02-2009 08:17 AM
Re: Sort problem
maybe you made it more complicate then simply?
Where does the '8' comes from?
Is it the last number of the previous column?
Can you give a better sample?
Volkmar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО03-02-2009 08:28 AM
тАО03-02-2009 08:28 AM
Re: Sort problem
In your example, you are expecting sort to recognize a certain range of characters (say 10-to-19 for the employee number) as a field. It is not going to happen as far as my understanding of sort man pages go.
You will need to use some interim parsing of the input file, otherwise all the spaces trailing any line, in the first field is going to be interpreted as a field separator and your first key field for sort is going to be the employee number, whereas when the line starts with that digit "8" your employee number will be key field 2. So, as JRF said, you have non-uniform fields for sort to interpret. And to be perfectly honest, JRF's solution, using awk in conjunction with sort is the most elegant solution you can come up with in your case. If the pipes in that command chain is not working due to the large input file size, the only thing you can do is to parse that command into separate commands and create interim files as you go. That should give you some flexibility.
UNIX because I majored in cryptology...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО03-02-2009 08:30 AM
тАО03-02-2009 08:30 AM
Re: Sort problem
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО03-02-2009 08:38 AM
тАО03-02-2009 08:38 AM
Re: Sort problem
$ cat myinputfile | while read line ; do
f1=`echo $line |cut -c 1-9`
f2=`echo $line |cut -c 10-19`
f3=`echo $line |cut -c 20-`
echo $f1","$f2","$f3
done
and see where the character counted fileds are being cut-off.
Hence the need for some external utility like awk to force them to unformity
UNIX because I majored in cryptology...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО03-02-2009 08:45 AM
тАО03-02-2009 08:45 AM
Re: Sort problem
sort -t# -k1.10nb,1.19nbb file.txt -o test.sorted