Using bash to export a comma separated list to html
Clash Royale CLAN TAG#URR8PPP
up vote
3
down vote
favorite
I've got a cxomma-separated csv that I want to turn into custom html, and I ran into another script which did it, but it's been nothing but issues for me since I use https://www.tutorialspoint.com/execute_bash_online.php to run it.
Here's the script I found: https://unix.stackexchange.com/questions/105501/convert-csv-to-html-table
My problem is that my output needs to be a bit different, and something about ECHO is really putting up a fight. So here's an example of my list:
Product,100 usd
Now using this script I want to convert that to look like:
Product100 usd
Basically separating the list into 2 cells. But echo keeps stripping out "'s so it's just a mess. I don't know if it's because the bash emulator wraps lines, but I keep getting errors, where it seems to assume >< and tr as well as td is a command.
Currently my script looks like this, and it reflects how much i've stuggled with echo..:
while read INPUT ; do
echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
echo ""onmouseout="this.style.backgroundColor='#d4e3e5';>";
echo ""<td>$INPUT//,/</td><td><b></b></td></tr>";""
done
And that generates:
$bash -f main.sh
main.sh: line 2: tr: No such file or directory
main.sh: line 4: ;
echo <td>six</td><td><b>nine</td><td><b>twelve</b></td></tr>: No such file or directory
main.sh: line 4: : command not found
I've experimented like crazy with echo, but now I'm at my wit's end. Any and all help greatly and gratefully accepted.
bash shell html css
add a comment |Â
up vote
3
down vote
favorite
I've got a cxomma-separated csv that I want to turn into custom html, and I ran into another script which did it, but it's been nothing but issues for me since I use https://www.tutorialspoint.com/execute_bash_online.php to run it.
Here's the script I found: https://unix.stackexchange.com/questions/105501/convert-csv-to-html-table
My problem is that my output needs to be a bit different, and something about ECHO is really putting up a fight. So here's an example of my list:
Product,100 usd
Now using this script I want to convert that to look like:
Product100 usd
Basically separating the list into 2 cells. But echo keeps stripping out "'s so it's just a mess. I don't know if it's because the bash emulator wraps lines, but I keep getting errors, where it seems to assume >< and tr as well as td is a command.
Currently my script looks like this, and it reflects how much i've stuggled with echo..:
while read INPUT ; do
echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
echo ""onmouseout="this.style.backgroundColor='#d4e3e5';>";
echo ""<td>$INPUT//,/</td><td><b></b></td></tr>";""
done
And that generates:
$bash -f main.sh
main.sh: line 2: tr: No such file or directory
main.sh: line 4: ;
echo <td>six</td><td><b>nine</td><td><b>twelve</b></td></tr>: No such file or directory
main.sh: line 4: : command not found
I've experimented like crazy with echo, but now I'm at my wit's end. Any and all help greatly and gratefully accepted.
bash shell html css
add a comment |Â
up vote
3
down vote
favorite
up vote
3
down vote
favorite
I've got a cxomma-separated csv that I want to turn into custom html, and I ran into another script which did it, but it's been nothing but issues for me since I use https://www.tutorialspoint.com/execute_bash_online.php to run it.
Here's the script I found: https://unix.stackexchange.com/questions/105501/convert-csv-to-html-table
My problem is that my output needs to be a bit different, and something about ECHO is really putting up a fight. So here's an example of my list:
Product,100 usd
Now using this script I want to convert that to look like:
Product100 usd
Basically separating the list into 2 cells. But echo keeps stripping out "'s so it's just a mess. I don't know if it's because the bash emulator wraps lines, but I keep getting errors, where it seems to assume >< and tr as well as td is a command.
Currently my script looks like this, and it reflects how much i've stuggled with echo..:
while read INPUT ; do
echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
echo ""onmouseout="this.style.backgroundColor='#d4e3e5';>";
echo ""<td>$INPUT//,/</td><td><b></b></td></tr>";""
done
And that generates:
$bash -f main.sh
main.sh: line 2: tr: No such file or directory
main.sh: line 4: ;
echo <td>six</td><td><b>nine</td><td><b>twelve</b></td></tr>: No such file or directory
main.sh: line 4: : command not found
I've experimented like crazy with echo, but now I'm at my wit's end. Any and all help greatly and gratefully accepted.
bash shell html css
I've got a cxomma-separated csv that I want to turn into custom html, and I ran into another script which did it, but it's been nothing but issues for me since I use https://www.tutorialspoint.com/execute_bash_online.php to run it.
Here's the script I found: https://unix.stackexchange.com/questions/105501/convert-csv-to-html-table
My problem is that my output needs to be a bit different, and something about ECHO is really putting up a fight. So here's an example of my list:
Product,100 usd
Now using this script I want to convert that to look like:
Product100 usd
Basically separating the list into 2 cells. But echo keeps stripping out "'s so it's just a mess. I don't know if it's because the bash emulator wraps lines, but I keep getting errors, where it seems to assume >< and tr as well as td is a command.
Currently my script looks like this, and it reflects how much i've stuggled with echo..:
while read INPUT ; do
echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
echo ""onmouseout="this.style.backgroundColor='#d4e3e5';>";
echo ""<td>$INPUT//,/</td><td><b></b></td></tr>";""
done
And that generates:
$bash -f main.sh
main.sh: line 2: tr: No such file or directory
main.sh: line 4: ;
echo <td>six</td><td><b>nine</td><td><b>twelve</b></td></tr>: No such file or directory
main.sh: line 4: : command not found
I've experimented like crazy with echo, but now I'm at my wit's end. Any and all help greatly and gratefully accepted.
bash shell html css
bash shell html css
edited 17 mins ago
Jens
418520
418520
asked 12 hours ago
Aryat Mapreh
185
185
add a comment |Â
add a comment |Â
3 Answers
3
active
oldest
votes
up vote
7
down vote
Your quoting is wrong, specifically the double double-quotes.
Let's break down what you have, the bits concatenated together
echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
- the echo command
- an empty string
""
- a redirection
<tr
-- this is where the "file not found" error comes from - a space
- a string
onmouseover="this.style.backgroundColor='#ffff66';"
- an open quote and semicolon, the first character of the next string
To fix your echo commands:
while read INPUT ; do
echo "<tr onmouseover="this.style.backgroundColor='#ffff66'""
echo "onmouseout="this.style.backgroundColor='#d4e3e5'>"
echo "<td>$INPUT//,/</td><td><b></b></td></tr>"
done
When you have a blend of single and double quotes, a heredoc is very readable. Also, use the read
command to separate your CSV line.
while IFS=, read -r first second ; do
cat <<END_HTML
<tr onmouseover="this.style.backgroundColor='#ffff66'" onmouseout="this.style.backgroundColor='#d4e3e5'">
<td>$first</td><td><b>$second</b></td>
</tr>
END_HTML
done
2
echo
doesn't read from stdin, so a heredoc would not be useful here. Perhaps you meant to usecat
in that last snippet instead?
– jwodder
10 hours ago
D'oh, of course. Thanks for the correction
– glenn jackman
40 mins ago
add a comment |Â
up vote
1
down vote
I think you're probably barking up the wrong tree with echo, probably sed or awk or perl or something else might be a better solution, but to just get your echo strings working you could escape the double-quotes and dollar signs you want printed, like:
#Added
$ echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
"<tr onmouseover="this.style.backgroundColor='#ffff66';"
$ echo ""onmouseout="this.style.backgroundColor='#d4e3e5';>"
"onmouseout="this.style.backgroundColor='#d4e3e5';>
$ echo ""<td>$INPUT//,/</td><td><b></b></td></tr>";""
"<td>$INPUT//,/</td><td><b></b></td></tr>";"
man bash
has a lot more info, see the section on Quoting, and watch out for things like:
metacharacter
A character that, when unquoted, separates words. One of the following:| & ; ( ) < > space tab newline
control operator
A token that performs a control function. It is one of the following symbols:|| & && ; ;; ;& ;;& ( ) | |& <newline>
Ok, so let's forget echo .. what am I looking at in whatever's more convenient, like sed, awk or perl?
– Aryat Mapreh
3 hours ago
add a comment |Â
up vote
0
down vote
SO I've not scripted in shell in ages, much less used it for years .. But i did try the latter solution you presented, and when i do: cat prices.csv | sh test2.sh it returns nothing but blanks.
When i try the first solution I get:
~$ cat prices.csv |sh test2.sh
test2.sh: 4: test2.sh: Syntax error: redirection unexpected
So not sure if im using solution #2 wrong, and dont know why solution #1 does that still?
The files im using is comma separated textfiles, not csv's, forgot this.
– Aryat Mapreh
5 hours ago
add a comment |Â
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
7
down vote
Your quoting is wrong, specifically the double double-quotes.
Let's break down what you have, the bits concatenated together
echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
- the echo command
- an empty string
""
- a redirection
<tr
-- this is where the "file not found" error comes from - a space
- a string
onmouseover="this.style.backgroundColor='#ffff66';"
- an open quote and semicolon, the first character of the next string
To fix your echo commands:
while read INPUT ; do
echo "<tr onmouseover="this.style.backgroundColor='#ffff66'""
echo "onmouseout="this.style.backgroundColor='#d4e3e5'>"
echo "<td>$INPUT//,/</td><td><b></b></td></tr>"
done
When you have a blend of single and double quotes, a heredoc is very readable. Also, use the read
command to separate your CSV line.
while IFS=, read -r first second ; do
cat <<END_HTML
<tr onmouseover="this.style.backgroundColor='#ffff66'" onmouseout="this.style.backgroundColor='#d4e3e5'">
<td>$first</td><td><b>$second</b></td>
</tr>
END_HTML
done
2
echo
doesn't read from stdin, so a heredoc would not be useful here. Perhaps you meant to usecat
in that last snippet instead?
– jwodder
10 hours ago
D'oh, of course. Thanks for the correction
– glenn jackman
40 mins ago
add a comment |Â
up vote
7
down vote
Your quoting is wrong, specifically the double double-quotes.
Let's break down what you have, the bits concatenated together
echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
- the echo command
- an empty string
""
- a redirection
<tr
-- this is where the "file not found" error comes from - a space
- a string
onmouseover="this.style.backgroundColor='#ffff66';"
- an open quote and semicolon, the first character of the next string
To fix your echo commands:
while read INPUT ; do
echo "<tr onmouseover="this.style.backgroundColor='#ffff66'""
echo "onmouseout="this.style.backgroundColor='#d4e3e5'>"
echo "<td>$INPUT//,/</td><td><b></b></td></tr>"
done
When you have a blend of single and double quotes, a heredoc is very readable. Also, use the read
command to separate your CSV line.
while IFS=, read -r first second ; do
cat <<END_HTML
<tr onmouseover="this.style.backgroundColor='#ffff66'" onmouseout="this.style.backgroundColor='#d4e3e5'">
<td>$first</td><td><b>$second</b></td>
</tr>
END_HTML
done
2
echo
doesn't read from stdin, so a heredoc would not be useful here. Perhaps you meant to usecat
in that last snippet instead?
– jwodder
10 hours ago
D'oh, of course. Thanks for the correction
– glenn jackman
40 mins ago
add a comment |Â
up vote
7
down vote
up vote
7
down vote
Your quoting is wrong, specifically the double double-quotes.
Let's break down what you have, the bits concatenated together
echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
- the echo command
- an empty string
""
- a redirection
<tr
-- this is where the "file not found" error comes from - a space
- a string
onmouseover="this.style.backgroundColor='#ffff66';"
- an open quote and semicolon, the first character of the next string
To fix your echo commands:
while read INPUT ; do
echo "<tr onmouseover="this.style.backgroundColor='#ffff66'""
echo "onmouseout="this.style.backgroundColor='#d4e3e5'>"
echo "<td>$INPUT//,/</td><td><b></b></td></tr>"
done
When you have a blend of single and double quotes, a heredoc is very readable. Also, use the read
command to separate your CSV line.
while IFS=, read -r first second ; do
cat <<END_HTML
<tr onmouseover="this.style.backgroundColor='#ffff66'" onmouseout="this.style.backgroundColor='#d4e3e5'">
<td>$first</td><td><b>$second</b></td>
</tr>
END_HTML
done
Your quoting is wrong, specifically the double double-quotes.
Let's break down what you have, the bits concatenated together
echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
- the echo command
- an empty string
""
- a redirection
<tr
-- this is where the "file not found" error comes from - a space
- a string
onmouseover="this.style.backgroundColor='#ffff66';"
- an open quote and semicolon, the first character of the next string
To fix your echo commands:
while read INPUT ; do
echo "<tr onmouseover="this.style.backgroundColor='#ffff66'""
echo "onmouseout="this.style.backgroundColor='#d4e3e5'>"
echo "<td>$INPUT//,/</td><td><b></b></td></tr>"
done
When you have a blend of single and double quotes, a heredoc is very readable. Also, use the read
command to separate your CSV line.
while IFS=, read -r first second ; do
cat <<END_HTML
<tr onmouseover="this.style.backgroundColor='#ffff66'" onmouseout="this.style.backgroundColor='#d4e3e5'">
<td>$first</td><td><b>$second</b></td>
</tr>
END_HTML
done
edited 41 mins ago
answered 11 hours ago
glenn jackman
15.3k22643
15.3k22643
2
echo
doesn't read from stdin, so a heredoc would not be useful here. Perhaps you meant to usecat
in that last snippet instead?
– jwodder
10 hours ago
D'oh, of course. Thanks for the correction
– glenn jackman
40 mins ago
add a comment |Â
2
echo
doesn't read from stdin, so a heredoc would not be useful here. Perhaps you meant to usecat
in that last snippet instead?
– jwodder
10 hours ago
D'oh, of course. Thanks for the correction
– glenn jackman
40 mins ago
2
2
echo
doesn't read from stdin, so a heredoc would not be useful here. Perhaps you meant to use cat
in that last snippet instead?– jwodder
10 hours ago
echo
doesn't read from stdin, so a heredoc would not be useful here. Perhaps you meant to use cat
in that last snippet instead?– jwodder
10 hours ago
D'oh, of course. Thanks for the correction
– glenn jackman
40 mins ago
D'oh, of course. Thanks for the correction
– glenn jackman
40 mins ago
add a comment |Â
up vote
1
down vote
I think you're probably barking up the wrong tree with echo, probably sed or awk or perl or something else might be a better solution, but to just get your echo strings working you could escape the double-quotes and dollar signs you want printed, like:
#Added
$ echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
"<tr onmouseover="this.style.backgroundColor='#ffff66';"
$ echo ""onmouseout="this.style.backgroundColor='#d4e3e5';>"
"onmouseout="this.style.backgroundColor='#d4e3e5';>
$ echo ""<td>$INPUT//,/</td><td><b></b></td></tr>";""
"<td>$INPUT//,/</td><td><b></b></td></tr>";"
man bash
has a lot more info, see the section on Quoting, and watch out for things like:
metacharacter
A character that, when unquoted, separates words. One of the following:| & ; ( ) < > space tab newline
control operator
A token that performs a control function. It is one of the following symbols:|| & && ; ;; ;& ;;& ( ) | |& <newline>
Ok, so let's forget echo .. what am I looking at in whatever's more convenient, like sed, awk or perl?
– Aryat Mapreh
3 hours ago
add a comment |Â
up vote
1
down vote
I think you're probably barking up the wrong tree with echo, probably sed or awk or perl or something else might be a better solution, but to just get your echo strings working you could escape the double-quotes and dollar signs you want printed, like:
#Added
$ echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
"<tr onmouseover="this.style.backgroundColor='#ffff66';"
$ echo ""onmouseout="this.style.backgroundColor='#d4e3e5';>"
"onmouseout="this.style.backgroundColor='#d4e3e5';>
$ echo ""<td>$INPUT//,/</td><td><b></b></td></tr>";""
"<td>$INPUT//,/</td><td><b></b></td></tr>";"
man bash
has a lot more info, see the section on Quoting, and watch out for things like:
metacharacter
A character that, when unquoted, separates words. One of the following:| & ; ( ) < > space tab newline
control operator
A token that performs a control function. It is one of the following symbols:|| & && ; ;; ;& ;;& ( ) | |& <newline>
Ok, so let's forget echo .. what am I looking at in whatever's more convenient, like sed, awk or perl?
– Aryat Mapreh
3 hours ago
add a comment |Â
up vote
1
down vote
up vote
1
down vote
I think you're probably barking up the wrong tree with echo, probably sed or awk or perl or something else might be a better solution, but to just get your echo strings working you could escape the double-quotes and dollar signs you want printed, like:
#Added
$ echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
"<tr onmouseover="this.style.backgroundColor='#ffff66';"
$ echo ""onmouseout="this.style.backgroundColor='#d4e3e5';>"
"onmouseout="this.style.backgroundColor='#d4e3e5';>
$ echo ""<td>$INPUT//,/</td><td><b></b></td></tr>";""
"<td>$INPUT//,/</td><td><b></b></td></tr>";"
man bash
has a lot more info, see the section on Quoting, and watch out for things like:
metacharacter
A character that, when unquoted, separates words. One of the following:| & ; ( ) < > space tab newline
control operator
A token that performs a control function. It is one of the following symbols:|| & && ; ;; ;& ;;& ( ) | |& <newline>
I think you're probably barking up the wrong tree with echo, probably sed or awk or perl or something else might be a better solution, but to just get your echo strings working you could escape the double-quotes and dollar signs you want printed, like:
#Added
$ echo ""<tr onmouseover="this.style.backgroundColor='#ffff66';"";
"<tr onmouseover="this.style.backgroundColor='#ffff66';"
$ echo ""onmouseout="this.style.backgroundColor='#d4e3e5';>"
"onmouseout="this.style.backgroundColor='#d4e3e5';>
$ echo ""<td>$INPUT//,/</td><td><b></b></td></tr>";""
"<td>$INPUT//,/</td><td><b></b></td></tr>";"
man bash
has a lot more info, see the section on Quoting, and watch out for things like:
metacharacter
A character that, when unquoted, separates words. One of the following:| & ; ( ) < > space tab newline
control operator
A token that performs a control function. It is one of the following symbols:|| & && ; ;; ;& ;;& ( ) | |& <newline>
edited 4 hours ago
answered 4 hours ago


Xen2050
9,41431536
9,41431536
Ok, so let's forget echo .. what am I looking at in whatever's more convenient, like sed, awk or perl?
– Aryat Mapreh
3 hours ago
add a comment |Â
Ok, so let's forget echo .. what am I looking at in whatever's more convenient, like sed, awk or perl?
– Aryat Mapreh
3 hours ago
Ok, so let's forget echo .. what am I looking at in whatever's more convenient, like sed, awk or perl?
– Aryat Mapreh
3 hours ago
Ok, so let's forget echo .. what am I looking at in whatever's more convenient, like sed, awk or perl?
– Aryat Mapreh
3 hours ago
add a comment |Â
up vote
0
down vote
SO I've not scripted in shell in ages, much less used it for years .. But i did try the latter solution you presented, and when i do: cat prices.csv | sh test2.sh it returns nothing but blanks.
When i try the first solution I get:
~$ cat prices.csv |sh test2.sh
test2.sh: 4: test2.sh: Syntax error: redirection unexpected
So not sure if im using solution #2 wrong, and dont know why solution #1 does that still?
The files im using is comma separated textfiles, not csv's, forgot this.
– Aryat Mapreh
5 hours ago
add a comment |Â
up vote
0
down vote
SO I've not scripted in shell in ages, much less used it for years .. But i did try the latter solution you presented, and when i do: cat prices.csv | sh test2.sh it returns nothing but blanks.
When i try the first solution I get:
~$ cat prices.csv |sh test2.sh
test2.sh: 4: test2.sh: Syntax error: redirection unexpected
So not sure if im using solution #2 wrong, and dont know why solution #1 does that still?
The files im using is comma separated textfiles, not csv's, forgot this.
– Aryat Mapreh
5 hours ago
add a comment |Â
up vote
0
down vote
up vote
0
down vote
SO I've not scripted in shell in ages, much less used it for years .. But i did try the latter solution you presented, and when i do: cat prices.csv | sh test2.sh it returns nothing but blanks.
When i try the first solution I get:
~$ cat prices.csv |sh test2.sh
test2.sh: 4: test2.sh: Syntax error: redirection unexpected
So not sure if im using solution #2 wrong, and dont know why solution #1 does that still?
SO I've not scripted in shell in ages, much less used it for years .. But i did try the latter solution you presented, and when i do: cat prices.csv | sh test2.sh it returns nothing but blanks.
When i try the first solution I get:
~$ cat prices.csv |sh test2.sh
test2.sh: 4: test2.sh: Syntax error: redirection unexpected
So not sure if im using solution #2 wrong, and dont know why solution #1 does that still?
answered 5 hours ago
Aryat Mapreh
185
185
The files im using is comma separated textfiles, not csv's, forgot this.
– Aryat Mapreh
5 hours ago
add a comment |Â
The files im using is comma separated textfiles, not csv's, forgot this.
– Aryat Mapreh
5 hours ago
The files im using is comma separated textfiles, not csv's, forgot this.
– Aryat Mapreh
5 hours ago
The files im using is comma separated textfiles, not csv's, forgot this.
– Aryat Mapreh
5 hours ago
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1368590%2fusing-bash-to-export-a-comma-separated-list-to-html%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password