How to set Field Separator for TCLSH??? :S


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to set Field Separator for TCLSH??? :S
# 1  
Old 12-19-2008
How to set Field Separator for TCLSH??? :S

Hi,
I am having a problem, with setting the FS in TCLSH, maybe someone knows the answer.

I have a Tclsh/Tk script, and i´m trying to get all (only) the running processes for the given user like this:

foreach process [exec ps -u $user -o command] {
puts stdout $process;
}

This also works, but not in that way as I want.
executing this "ps -u $user -o command" in the command line will give me an output like that:

COMMAND
/usr/lib/bonobo/bonobo-activation-server --ac-activate --ior-output-fd=16
sshd: a72093@notty
tcsh -c /usr/bin/nxnode --startsession

BUT, when I am trying to execute in the foreach loop, it will give me an output like this

COMMAND
/usr/lib/bonobo/bonobo-activation-server
--ac-activate
--ior-output-fd=16
sshd:
a72093@notty
tcsh
-c
/usr/bin/nxnode
--startsession

How can I set the FS that way, that the output lines wouldnt be splitted by "space" ?

Thank you.
# 2  
Old 12-19-2008
Hi.

For this specific problem, this appears to be a simpler solution:
Code:
#!/usr/bin/env tclsh

# @(#) s1     Demonstrate method for printing results from exec.

set version [ info tclversion ]
set message " Hello, world from tclsh ($version)."
puts stdout $message
puts stdout ""

set m [ exec ls -1gG ]
puts stdout $m

Producing:
Code:
% ./s1
 Hello, world from tclsh (8.4).

total 8
-rw-r--r--  1 182 Dec 19 05:30 readme.txt
-rwxr--r--  1 246 Dec 19 05:40 s1

Best wishes ... cheers, drl

PS. In future posts, please enclose code and data in CODE tags. The easy way to do this is to highlight the text in the edit window with your mouse, then click the # button just above the editing window.
# 3  
Old 12-19-2008
Hi.

I was thinking that the OP may wish to do processing on specific lines and not just printing. Here is an extended example showing a way to do that:
Code:
#!/usr/bin/env tclsh

# @(#) s3     Demonstrate method for printing results from exec.

set version [ info tclversion ]
set message " Hello, world from tclsh ($version)."
puts stdout $message
puts stdout ""

puts " As results from command substitution:"
set m [ exec ls -1gG ]
puts stdout $m

puts stdout ""
puts stdout " With foreach loop on list:"
foreach i [ list [ exec ls -1gG ] ] {
  puts stdout $i
}

exit 0

Producing:
Code:
% ./s3
 Hello, world from tclsh (8.4).

 As results from command substitution:
total 16
-rw-r--r--  1 182 Dec 19 05:30 readme.txt
-rwxr--r--  1 246 Dec 19 05:40 s1
-rwxr--r--  1 754 Dec 19 08:37 s2
-rwxr--r--  1 415 Dec 19 08:40 s3

 With foreach loop on list:
total 16
-rw-r--r--  1 182 Dec 19 05:30 readme.txt
-rwxr--r--  1 246 Dec 19 05:40 s1
-rwxr--r--  1 754 Dec 19 08:37 s2
-rwxr--r--  1 415 Dec 19 08:40 s3

Best wishes ... cheers, drl

Reference to consider:
Code:
Title: Practical Programming in Tcl and Tk
Author: Brent Welch, Ken Jones
Edition: 4th
Date: June 20, 2003
Publisher:
ISBN: 0130385603
Pages: 960
Categories: programming, text processing, GUI
Comments: 3.5 stars, 41 reviews (2008.12)
Comments: (I have 3rd edition)

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Inserting a field without disturbing field separator on other fields

Hi All, I have the input as below: cat input 032016002 2.891 97.109 16.605 27.172 24.017 32.207 0.233 0.021 39.810 0.077 0.026 19.644 13.882 0.131 11.646 0.102 11.449 76.265 23.735 16.991 83.009 8.840 91.160 0.020 99.980 52.102 47.898 44.004 55.996 39.963 18.625 0.121 1.126 40.189... (15 Replies)
Discussion started by: am24
15 Replies

2. Shell Programming and Scripting

Field separator

Hello All, I have a file, but I want to separate the file at a particular record with comma"," in the line Input file APPLE6SSAMSUNGS5PRICEPERPIECEDOLLAR600EACH010020340URX581949695US to Output file APPLE6S,SAMSUNGS5,PRICEPERPIECE,DOLLAR600EACH,010020340URX581949695,US This is for... (11 Replies)
Discussion started by: m6248m
11 Replies

3. Shell Programming and Scripting

awk field separator help -

Hi Experts , file : - How to construct the awk filed separator so that $1, $2 $3 , can be assigned to the each "" range. I am trying : awk -F"]" '{print $1}' but it is printing the entire file. Not first field. The desired output needed for first field... (9 Replies)
Discussion started by: rveri
9 Replies

4. Shell Programming and Scripting

[SOLVED] How to set field separator in awk when FS is "||" ?

Dear Experts, How to use field separator in awk , when the field separation is needed as "||" Example: (file1 ) aa || bb || cc || 1234 xx || yy || zz || 1123 Q: If I want to print $3 and $4 only , with using the field separator "||" How to write awk code: (6 Replies)
Discussion started by: rveri
6 Replies

5. UNIX for Dummies Questions & Answers

change field separator only from nth field until NF

Hi ! input: 111|222|333|aaa|bbb|ccc 999|888|777|nnn|kkk 444|666|555|eee|ttt|ooo|ppp With awk, I am trying to change the FS "|" to "; " only from the 4th field until the end (the number of fields vary between records). In order to get: 111|222|333|aaa; bbb; ccc 999|888|777|nnn; kkk... (1 Reply)
Discussion started by: beca123456
1 Replies

6. Shell Programming and Scripting

Array and field separator

Hi all, I have an array in BASH and I need to change the IFS in order to split up it correctly. Here an example: array_test=(hello world+sunny) for elem in ${array_test}; do echo $elem done echo -e "\n changed IFS \n" OLD_IFS=$IFS IFS=+ for elem in ${array_test}; do echo... (3 Replies)
Discussion started by: Dedalus
3 Replies

7. Shell Programming and Scripting

echo field separator

I am trying to echo all fields except for the last field. I want to include the field seperator, but it is removed. echo "a;s;v;g" | awk -F ";" '{$(NF--)=""; print}' a s v I want an output like this: a;s;v; (3 Replies)
Discussion started by: locoroco
3 Replies

8. Shell Programming and Scripting

Field separator X'1F'

Hi, I have a flat file with fields separated by a X'1F' i have to fetch 4th field from second line. please help me how to achieve it. I tried with below command and its not working. cut -f4 -d`echo -e '\x1f'` filename.txt I am using SunOS. Thanks in advance. (2 Replies)
Discussion started by: rohan10k
2 Replies

9. Shell Programming and Scripting

awk, comma as field separator and text inside double quotes as a field.

Hi, all I need to get fields in a line that are separated by commas, some of the fields are enclosed with double quotes, and they are supposed to be treated as a single field even if there are commas inside the quotes. sample input: for this line, 5 fields are supposed to be extracted, they... (8 Replies)
Discussion started by: kevintse
8 Replies

10. Shell Programming and Scripting

Field separator in awk

Hi I need to check if field separator I am using in awk statement is " : ", for example: TIME=12:59 HOUR=`echo "$TIME" | awk '{FS=":"; print $1}'` MINUTES=`echo "$TIME" | awk '{FS=":"; print $2}'` Is there a way to check within the above awk statement ? Thanks for help -A (2 Replies)
Discussion started by: aoussenko
2 Replies
Login or Register to Ask a Question