Print strings in bash in loop


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Print strings in bash in loop
# 1  
Old 12-22-2019
Print strings in bash in loop

Hello All,


I am a newbie and have been struggling to print in loop.


I have one line hold in a variable and need to print them with first six strings.



We have get the value with below macOS terminal command.



Code:
osascript -e 'tell application "System Events" to get properties of every login item'


Quote:
name:Pages, path:/Applications/Pages.app, class:login item, kind:Application, hidden:false, name:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:true, name:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false

need to print them with new line like below:



Quote:
name:Pages, path:/Applications/Pages.app, class:login item, kind:Application, hidden:false


name:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:true


name:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false

I know i did wrong but i use simple logic to print them with below.




Quote:
echo $userlogin | awk -F ' ' '{print $13$14$15$16$17$18}'

echo $userlogin | awk -F ' ' '{print $19$20$21$22$23$24}'

echo $userlogin | awk -F ' ' '{print $25$26$27$28$29$30}'

echo $userlogin | awk -F ' ' '{print $25$26$27$28$29$30}'
# 2  
Old 12-22-2019
Did you try something simple like?


Code:
sed 's/, name/\nname/g' yourfile.txt

Code:
ubuntu$ sed 's/, name/\nname/g' yourfile.txt
name:Pages, path:/Applications/Pages.app, class:login item, kind:Application, hidden:false
name:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:true
name:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false

Code:
ubuntu$  cat yourfile.txt
name:Pages, path:/Applications/Pages.app, class:login item, kind:Application, hidden:false, name:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:true, name:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false

# 3  
Old 12-22-2019
Thank you @Neo for your quick response. But that didn't work as expected.


I tried with two ways with your advise:


Quote:
++ osascript -e 'tell application "System Events" to get properties of every login item'
+ userlogin='name:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:true, name:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false'
+ echo name:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:true, name:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false
+ sed 's/, name/\nname/g'
name:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:truenname:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false
Quote:
sed 's/, name/\nname/g' ~/Desktop/userlogin.txt
name:Pages.app, path:/Applications/Pages.app, class:login item, kind:Application, hidden:falsenname:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:truenname:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false
Is it due to the variable holds as one word?

Last edited by 7adi; 12-22-2019 at 09:04 AM..
# 4  
Old 12-22-2019
Deleted post because my comment was accidentally on the output and not the input.

See my post below specific to macos and using perl instead of sed or using gsed on macos.

Earlier sed code works on linux but not macos.
# 5  
Old 12-22-2019
Apologies. I tried again. I am confused here. I did exactly same as you advised. They printed in other way as highlighted below.
The strings changed to smiley when I paste it from my terminal and had to edit. The code still remain same as in my initial post.



Code:
user$ cat yourfile.txt
name:Pages, path:/Applications/Pages.app, class:login item, kind:Application, hidden:false, name:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:true, name:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false

user$ sed 's/, name/\nname/g' yourfile.txt
name:Pages, path:/Applications/Pages.app, class:login item, kind:Application, hidden:falsenname:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:truenname:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false

# 6  
Old 12-22-2019
What's your shell and sed versions? Either of them may not like the \n notation and interprets it as a plain n... as you can see in falsennameTry a verbatim new line char:

Code:
sed 's/, name/\
name/g' file
name:Pages, path:/Applications/Pages.app, class:login item, kind:Application, hidden:false
name:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:true
name:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false


Last edited by RudiC; 12-22-2019 at 09:43 AM..
# 7  
Old 12-22-2019
Hi,


@rudic, you might be correct something must be with shell version. Below is the output that might help to provide additional advice. I was not able to find sed version on my macOS 10.13.6 neither verbatim new line


@neo, may be we are not on same page, the code you have quoted is my output actually.


Code:
tests-Mac:Desktop test$ $SHELL --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)
Copyright (C) 2007 Free Software Foundation, Inc.


tests-Mac:Desktop test$ uname -v
Darwin Kernel Version 17.7.0: Sun Jun  2 20:31:42 PDT 2019; root:xnu-4570.71.46~1/RELEASE_X86_64


tests-Mac:Desktop test$ sw_vers -productVersion
10.13.6


tests-Mac:Desktop test$ sed --version
sed: illegal option -- -
usage: sed script [-Ealn] [-i extension] [file ...]
       sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]


tests-Mac:Desktop test$ osascript -e 'tell application "System Events" to get properties of every login item' | sed 's/, name/\ name/g'
name:Mail, path:/Applications/Mail.app, class:login item, kind:Application, hidden:false name:DVD Player, path:/Applications/DVD Player.app, class:login item, kind:Application, hidden:true name:Calculator, path:/Applications/Calculator.app, class:login item, kind:Application, hidden:false name:Calendar, path:/Applications/Calendar.app, class:login item, kind:Application, hidden:false name:App Store, path:/Applications/App Store.app, class:login item, kind:Application, hidden:false


tests-Mac:Desktop test$ sed 's/, name/\nname/g' yourfile.txt
name:Pages, path:/Applications/Pages.app, class:login item, kind:Application, hidden:falsenname:Calculator, path:/System/Applications/Calculator.app, class:login item, kind:Application, hidden:truenname:Calendar, path:/System/Applications/Calendar.app, class:login item, kind:Application, hidden:false


tests-Mac:Desktop test$ osascript -e 'tell application "System Events" to get properties of every login item' | sed 's/, name/\nname/g'
name:Mail, path:/Applications/Mail.app, class:login item, kind:Application, hidden:falsenname:DVD Player, path:/Applications/DVD Player.app, class:login item, kind:Application, hidden:truenname:Calculator, path:/Applications/Calculator.app, class:login item, kind:Application, hidden:falsenname:Calendar, path:/Applications/Calendar.app, class:login item, kind:Application, hidden:falsenname:App Store, path:/Applications/App Store.app, class:login item, kind:Application, hidden:false

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using arrays in bash using strings to bash built-in true

I have the following code and for some reason when I call the program using /home/tcdata/tatsh/trunk/hstmy/bin/bash/raytrac.bash --cmod=jcdint.cmod I get hasArgument = hasArgument = true Somehow the array element is returning even though I have not chosen the option. ... (41 Replies)
Discussion started by: kristinu
41 Replies

2. Shell Programming and Scripting

[Help me!] Print text between two strings

Deal All, I have problem for this: input file : "data.txt" R 240 585694.59946146.8 8.0 239 585694.09946134.3 8.0 238 585693.59946121.8 8.01R 237 585693.09946109.3 8.0 236 585692.59946096.9 8.0 235 585692.19946084.4 8.01R 234 585691.59946071.9 8.0 233 585691.09946059.5 8.0 232... (2 Replies)
Discussion started by: aksin
2 Replies

3. Shell Programming and Scripting

[Help me!] print text between two strings

Deal All, I have problem for this: input file : "data.txt" R 240 585694.59946146.8 8.0 239 585694.09946134.3 8.0 238 585693.59946121.8 8.01R 237 585693.09946109.3 8.0 236 585692.59946096.9 8.0 235 585692.19946084.4 8.01R 234 585691.59946071.9 8.0 233 585691.09946059.5 8.0 232... (2 Replies)
Discussion started by: aksin
2 Replies

4. UNIX for Dummies Questions & Answers

Get strings on a file and print

hi all! i have a file like this lea 25 female dave 18 male jake 27 male and i want to have an output file like this my name is lea. i am 25. female my name is dave. i am 18. male my name is jake. i am 27. male thanks! (2 Replies)
Discussion started by: engr.jay
2 Replies

5. Shell Programming and Scripting

BASH loop inside a loop question

Hi all Sorry for the basic question, but i am writing a shell script to get around a slightly flaky binary that ships with one of our servers. This particular utility randomly generates the correct information and could work first time or may work on the 12th or 100th attempt etc !.... (4 Replies)
Discussion started by: rethink
4 Replies

6. Shell Programming and Scripting

print specific strings only

Hello, I have a file like this.. 2 168611167 STK39 STK39 --- 27347 "serine threonine kinase 39 (STE20/SPS1 homolog, yeast)" YES SNP_A-2086192 rs16854601 0.001558882 6 13670256 SIRT5 /// RPS4X SIRT5 --- 23408 /// 6191 "sirtuin (silent mating type... (5 Replies)
Discussion started by: genehunter
5 Replies

7. Shell Programming and Scripting

Using variables created sequentially in a loop while still inside of the loop [bash]

I'm trying to understand if it's possible to create a set of variables that are numbered based on another variable (using eval) in a loop, and then call on it before the loop ends. As an example I've written a script called question (The fist command is to show what is the contents of the... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

8. Shell Programming and Scripting

Print all the lines between 2 specified strings

Hi All, I have a file in which i want to print all the lines between 2 defined strings. Ex- I have file with data as follows STEP1:- ----- has some 20 -30 lines of data STEP2:- ----- has some 20 -30 lines of data So i want to print those lines between STEP1 & STEP2. (line including STEP1)... (7 Replies)
Discussion started by: digitalrg
7 Replies

9. Shell Programming and Scripting

Print all between 2 strings

Hi All, I'm working on a large file and need to extract all data between 2 strings. I have seen many good solutions to threads almost like my problem but none that quite fit. This is all very new to me so any ideas would be really appreciated! (attempted to read sed and awk tutorials but got a... (9 Replies)
Discussion started by: soots
9 Replies

10. Shell Programming and Scripting

bash and ksh: variable lost in loop in bash?

Hi, I use AIX (ksh) and Linux (bash) servers. I'm trying to do scripts to will run in both ksh and bash, and most of the time it works. But this time I don't get it in bash (I'm more familar in ksh). The goal of my script if to read a "config file" (like "ini" file), and make various report.... (2 Replies)
Discussion started by: estienne
2 Replies
Login or Register to Ask a Question