Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game. |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
 |
11-29-2007, 08:03 PM
|
#1
|
LQ Newbie
Registered: Nov 2007
Location: Melbourne, Australia
Posts: 14
Rep:
|
shell script/command for converting columns/table onto a single line
Hi all,
I'm after a command, or a sequence of commands that can help me convert values in a table (columns and rows) to values on a single line. The number of columns in the input file is always the same but the number of rows can vary.
eg
The table might look like the following:
A B C
D E F
G H I
J K L
I need the information to be output onto a single line that looks like the following.
A B C D E F G H I J K L
Any help would be greatly appreciated.
|
|
|
11-29-2007, 08:20 PM
|
#2
|
Moderator
Registered: Feb 2004
Location: Outside Paris
Distribution: Solaris 11.4, Oracle Linux, Mint, Debian/WSL
Posts: 9,795
|
"echo" is doing this job.
Code:
$ a="a b c
d e f
g h i"
$ echo "$a"
a b c
d e f
g h i
$ echo $a
a b c d e f g h i
|
|
|
11-29-2007, 08:34 PM
|
#3
|
LQ Newbie
Registered: Nov 2007
Location: Melbourne, Australia
Posts: 14
Original Poster
Rep:
|
that is fu@King brilliant.
thank you very much
|
|
|
11-29-2007, 09:23 PM
|
#4
|
Senior Member
Registered: Aug 2006
Posts: 2,697
|
Quote:
Originally Posted by skuz_ball
I need the information to be output onto a single line that looks like the following.
A B C D E F G H I J K L
|
Code:
tr -d '\n ' < file_with_table
|
|
|
11-29-2007, 10:23 PM
|
#5
|
LQ Newbie
Registered: Nov 2007
Location: Melbourne, Australia
Posts: 14
Original Poster
Rep:
|
I ended up using the echo command in my script. It took two lines instead of one but I prefer the simplicity. I did the following.
Quote:
file=$(more file_with_table)
echo $file > one-line-file
|
I'm really only beginning with shell scripts so I reckon I'll be using the more basic commands at first.
|
|
|
11-30-2007, 12:54 AM
|
#6
|
Amigo developer
Registered: Dec 2003
Location: Germany
Distribution: Slackware
Posts: 4,928
|
You probably should be using 'cat' instead of 'more'.
|
|
|
11-30-2007, 12:55 AM
|
#7
|
LQ Guru
Registered: Aug 2004
Location: Sydney
Distribution: Rocky 9.x
Posts: 18,442
|
file=$(<yourfile)
|
|
|
11-30-2007, 01:20 AM
|
#8
|
LQ Guru
Registered: Aug 2001
Location: Fargo, ND
Distribution: SuSE AMD64
Posts: 15,733
|
The "cat file | tr '\n' ' ' >newfile" example will add a space after the last item if the last lines ends with a newline as is apt to be the case.
The 2nd post isn't taking the input from a file.
The "file=$(<yourfile); echo $file < newfile" example works perfectly.
I think the 2nd post showing the difference between $a and "$a" and the later one completed it by entering the file into a variable:
a=$(<temp)
~> echo "$a" >newfile
A B C
D E F
G H I
K L M
N O P
~> echo $a >newfile
A B C D E F G H I K L M N O P
|
|
|
11-30-2007, 02:54 AM
|
#9
|
Moderator
Registered: Feb 2004
Location: Outside Paris
Distribution: Solaris 11.4, Oracle Linux, Mint, Debian/WSL
Posts: 9,795
|
Using an intermediary variable may be unnecessary:
Code:
$ cat file
A B C
D E F
G H I
K L M
$ echo $(<file)
A B C D E F G H I K L M
|
|
|
11-30-2007, 03:02 AM
|
#10
|
Senior Member
Registered: Mar 2004
Location: england
Distribution: Mint, Armbian, NetBSD, Puppy, Raspbian
Posts: 3,516
|
if it's not too large
xargs < file will do it too,
of course you need to be careful if the file has meta-characters in it
|
|
|
All times are GMT -5. The time now is 07:06 PM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|