Visit Our UNIX and Linux User Community


awk print string with removing all spaces


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk print string with removing all spaces
# 1  
Old 05-26-2015
awk print string with removing all spaces

Hi all,

I want to set 10 set of strings into a variable where:
  1. removing all spaces within each string
  2. change the delimiter from "|" to ","

Currently, I've the below script like this:
Code:
Table=`ten character strings with spaces in-between and each string with delimiter "|" | tr -d ' ' | awk -F'|' '{print $1","$2","$3","$4","$5","$6","$7","$8","$9","$10}'`

Today I've got an error 0403-029 There is not enough memory available now. while running the tr -d ' ' (delete space characters) so I suspect either I've used too many pipelines or the tr command (translate or delete) itself may eat up the memory.

I'd like to know if there is a way to remove all spaces within each string within the command:
Code:
awk -F'|' '{print $1","$2","$3","$4","$5","$6","$7","$8","$9","$10}'`

So as to use less pipeline commands thus reduce the memory consumption

Thanks in advance

Paul

Last edited by rbatte1; 05-26-2015 at 02:19 PM.. Reason: Converted numeric/text list to LIST=1 tags and FONT formatting to ICODE tags - added CODE tags too
# 2  
Old 05-26-2015
Welcome to the forums.
Your input string seems to be confusing to me. Could you please provide some sample data which is seperated by "|" and provide expected output? ALso how do you reading those input? e.g. from file?
# 3  
Old 05-26-2015
Hi Clx,

The input was come from a api command's output and the format as follows:
Code:
aaa1|bbbb1   | cc1   | dddd ddd1 |eee eee eee1|ff1|gg1|hh1|ii1|jj1
aaa2|bbbb2   | cc2   | dddd ddd2 |eee eee eee2|ff2|gg2|hh2|ii2|jj2
aaa3|bbbb3   | cc3   | dddd ddd3 |eee eee eee3|ff3|gg3|hh3|ii3|jj3

and I want to have the output from awk -F'|' '{print $1","$2","$3","$4","$5","$6","$7","$8","$9","$10}'` becomes:
Code:
aaa1,bbbb1,cc1,dddd ddd1,eee eee eee1,ff1,gg1,hh1,ii1,jj1
aaa2,bbbb2,cc2,dddd ddd2,eee eee eee2,ff2,gg2,hh2,ii2,jj2
aaa3,bbbb3,cc3,dddd ddd3,eee eee eee3,ff3,gg3,hh3,ii3,jj3

then finally set the output from awk to the variable Table (for some reasons that I don't want to use file so that's why I keep using pipe and then put all result records into a variable)

Paul

Last edited by rbatte1; 05-26-2015 at 02:20 PM.. Reason: Added CODE tags for data
# 4  
Old 05-26-2015
Please use code tags as required by forum rules!

That won't work. tr -d ' ' will remove ALL spaces, so those inside fields "eee eee" etc as well.
How about
Code:
awk '{gsub(/ *\| */,",")}1' file
aaa1,bbbb1,cc1,dddd ddd1,eee eee eee1,ff1,gg1,hh1,ii1,jj1
aaa2,bbbb2,cc2,dddd ddd2,eee eee eee2,ff2,gg2,hh2,ii2,jj2
aaa3,bbbb3,cc3,dddd ddd3,eee eee eee3,ff3,gg3,hh3,ii3,jj3

# 5  
Old 05-26-2015
Hi RudiC,

Sorry that I made a mistake for the sample output, it is indeed to remove all spaces as follows:
and I want to have the output from awk -F'|' '{print $1","$2","$3","$4","$5","$6","$7","$8","$9","$10}'` becomes:
Code:
aaa1,bbbb1,cc1,ddddddd1,eeeeeeeee1,ff1,gg1,hh1,ii1,jj1
aaa2,bbbb2,cc2,ddddddd2,eeeeeeeee2,ff2,gg2,hh2,ii2,jj2
aaa3,bbbb3,cc3,ddddddd3,eeeeeeeee3,ff3,gg3,hh3,ii3,jj3

Sorry for any inconvenience caused

Paul

Last edited by rbatte1; 05-26-2015 at 02:23 PM.. Reason: Added CODE & ICODE tags
# 6  
Old 05-26-2015
Try
Code:
awk '{gsub(/\|/,","); gsub(/ /,"")}1' file

, then, or
Code:
tr '|' ','  <file | tr -d ' '

The first one is roughly twice as fast with your sample data; this may become less on larger data files.
# 7  
Old 05-26-2015
Hi RudiC,

So I can have the set of command become:

Code:
Table=`an api command that produces multiplues line where each line with ten character strings with spaces in-between and each string with delimiter "|"| awk '{gsub(/\|/,","); gsub(/ /,"")}1' file

So as to set the output from awk to the variable Table?

Thanks in advance

Paul

Last edited by rbatte1; 05-26-2015 at 02:24 PM.. Reason: Code tags again

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk - print columns with text and spaces

Hi, I'm using awk to print columns from a tab delimited text file: awk '{print " "$2" "$3" $6"}' file The problem I have is column 6 contains text with spaces etc which means awk only prints the first word. How can I tell awk to print the whole column content as column 6? Thanks, (10 Replies)
Discussion started by: keenboy100
10 Replies

2. UNIX for Dummies Questions & Answers

AWK print last field including SPACES

I have simple test.sh script, see below: bill_code=`echo $record | awk -F"|" '{print $1}'` Fullname=`echo $record | awk -F"|" '{print $3}'` email=`echo $record | awk -F\ '{print $4}'` The last field contains spaces: see csv below: A0222|Y|DELACRUZ|-cc dell@yahoo.com-cc support@yahoo.com ... (9 Replies)
Discussion started by: quay
9 Replies

3. Shell Programming and Scripting

awk for removing spaces

HI, I have a file with lot of blank lines, how can I remove those using awk?? Thanks, Shruthi (4 Replies)
Discussion started by: shruthidwh
4 Replies

4. Shell Programming and Scripting

Removing columns from awk '{ print $0 }'

I have a one-line command, lsusb | awk '{ $1=""; $2=""; $3=""; $4=""; $5=""; $6=""; print $0 }' It works, and gives the results I expect, I was just wondering if I am missing some easier way to nullify the first 6 column variables? Something like, lsusb | awk '{ $(1-6)=""; print $0 }' But... (10 Replies)
Discussion started by: AlphaLexman
10 Replies

5. UNIX for Dummies Questions & Answers

Print files with spaces using awk

When I use: find . -ls | awk 'BEGIN { OFS = ";"} {print $1,$2,$11}'I get a nice result, yet the files with spaces in it show only the first word and all other characters after the blank space are not printed. e.g. 'file with a blank space' is printed file 'file_with a blank space' is... (7 Replies)
Discussion started by: dakke
7 Replies

6. Shell Programming and Scripting

Print the string between spaces

How to print the strings within a line between two spaces . <ns1:providerErrorCode>141</ns1:providerErrorCode> <ns1:providerErrorText>business_rule_exception-Server.404:Cannot proceed because the subscriber with phone number is either suspended or the account has an unpaid... (8 Replies)
Discussion started by: raghunsi
8 Replies

7. Shell Programming and Scripting

Print filenames with spaces using awk

Hello all, I want to list the file contents of the directory and number them. I am using la and awk to do it now, #ls |awk '{print NR "." $1}' 1. alpha 2. beta 3. gamma The problem I have is that some files might also have some spaces in the filenames. #ls alpha beta gamma ... (7 Replies)
Discussion started by: grajp002
7 Replies

8. Shell Programming and Scripting

Removing blank spaces, tab spaces from file

Hello All, I am trying to remove all tabspaces and all blankspaces from my file using sed & awk, but not getting proper code. Please help me out. My file is like this (<b> means one blank space, <t> means one tab space)- $ cat file NARESH<b><b><b>KUMAR<t><t>PRADHAN... (3 Replies)
Discussion started by: NARESH1302
3 Replies

9. Shell Programming and Scripting

Removing spaces from string

I want a user to be able to paste in a string like "01 3F 20 1F" and have the script reformat it to "013F201F" to pass it on to the next step. I was trying to figure it out with awk but wasnt working well. Never mind, found answer. did not know about tr :) (7 Replies)
Discussion started by: ippy98
7 Replies

10. Shell Programming and Scripting

How to print arguments along with spaces using awk

Hi All, file_1.txt contains aaa bbbb hhhh vvvvv mmmmm iiiii What i want is to search for the first coloumn of each line using awk.i.e as below: awk '/aaa/ {printf(<>)}' file_1.txt The print part (<>) should contain all the values(or coloumns ) in the particular line(here it... (8 Replies)
Discussion started by: jisha
8 Replies

Featured Tech Videos