bash. read input “words” string between symbols [duplicate]
This question already has an answer here:
How do I split a string on a delimiter in Bash?
33 answers
I have this kind of input in a bash I'm creating:
cat-dog-lion
I need my program to do something with each word like this
`if first_word == "cat"
do stuff
if second_word == "dog"
do other stuff`
How should I do this?
Thank you
linux bash shell
marked as duplicate by georgexsh, tripleee
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 22 '18 at 12:13
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
This question already has an answer here:
How do I split a string on a delimiter in Bash?
33 answers
I have this kind of input in a bash I'm creating:
cat-dog-lion
I need my program to do something with each word like this
`if first_word == "cat"
do stuff
if second_word == "dog"
do other stuff`
How should I do this?
Thank you
linux bash shell
marked as duplicate by georgexsh, tripleee
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 22 '18 at 12:13
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
This question already has an answer here:
How do I split a string on a delimiter in Bash?
33 answers
I have this kind of input in a bash I'm creating:
cat-dog-lion
I need my program to do something with each word like this
`if first_word == "cat"
do stuff
if second_word == "dog"
do other stuff`
How should I do this?
Thank you
linux bash shell
This question already has an answer here:
How do I split a string on a delimiter in Bash?
33 answers
I have this kind of input in a bash I'm creating:
cat-dog-lion
I need my program to do something with each word like this
`if first_word == "cat"
do stuff
if second_word == "dog"
do other stuff`
How should I do this?
Thank you
This question already has an answer here:
How do I split a string on a delimiter in Bash?
33 answers
linux bash shell
linux bash shell
asked Nov 22 '18 at 10:13
LanodisoftLanodisoft
174
174
marked as duplicate by georgexsh, tripleee
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 22 '18 at 12:13
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by georgexsh, tripleee
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 22 '18 at 12:13
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
BASH solution:
input='cat-dog-lion'
if [[ "${input}" =~ "^cat-?" ]]
then
echo "do stuff"
if [[ "${input}" =~ "^cat-dog-?" ]]
then
echo "do other stuff"
fi
fi
If wanna AWK solution here it is:
awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
Test:
$ echo 'cat-dog-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
do stuff
do other stuff
$ echo 'cat-wolf-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
do stuff
$ echo 'lynx-dog-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
$
add a comment |
If the input field separator is a -
, you should call read
with IFS set appropriately:
echo 'cat-dog-lion' | { IFS=- read first_word second_word third_word other_stuff
case $first_word in
cat) ... ;;
*) ... ;;
esac
case $second_word in
...
esac
...
}
Note that the enclosing {
and }
are important, as the variables go out of scope after the closing {
. (The pipe creates a subprocess in which the variables exist.)
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
BASH solution:
input='cat-dog-lion'
if [[ "${input}" =~ "^cat-?" ]]
then
echo "do stuff"
if [[ "${input}" =~ "^cat-dog-?" ]]
then
echo "do other stuff"
fi
fi
If wanna AWK solution here it is:
awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
Test:
$ echo 'cat-dog-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
do stuff
do other stuff
$ echo 'cat-wolf-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
do stuff
$ echo 'lynx-dog-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
$
add a comment |
BASH solution:
input='cat-dog-lion'
if [[ "${input}" =~ "^cat-?" ]]
then
echo "do stuff"
if [[ "${input}" =~ "^cat-dog-?" ]]
then
echo "do other stuff"
fi
fi
If wanna AWK solution here it is:
awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
Test:
$ echo 'cat-dog-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
do stuff
do other stuff
$ echo 'cat-wolf-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
do stuff
$ echo 'lynx-dog-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
$
add a comment |
BASH solution:
input='cat-dog-lion'
if [[ "${input}" =~ "^cat-?" ]]
then
echo "do stuff"
if [[ "${input}" =~ "^cat-dog-?" ]]
then
echo "do other stuff"
fi
fi
If wanna AWK solution here it is:
awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
Test:
$ echo 'cat-dog-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
do stuff
do other stuff
$ echo 'cat-wolf-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
do stuff
$ echo 'lynx-dog-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
$
BASH solution:
input='cat-dog-lion'
if [[ "${input}" =~ "^cat-?" ]]
then
echo "do stuff"
if [[ "${input}" =~ "^cat-dog-?" ]]
then
echo "do other stuff"
fi
fi
If wanna AWK solution here it is:
awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
Test:
$ echo 'cat-dog-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
do stuff
do other stuff
$ echo 'cat-wolf-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
do stuff
$ echo 'lynx-dog-lion' | awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'
$
edited Nov 22 '18 at 11:00
answered Nov 22 '18 at 10:33
KubatorKubator
74911
74911
add a comment |
add a comment |
If the input field separator is a -
, you should call read
with IFS set appropriately:
echo 'cat-dog-lion' | { IFS=- read first_word second_word third_word other_stuff
case $first_word in
cat) ... ;;
*) ... ;;
esac
case $second_word in
...
esac
...
}
Note that the enclosing {
and }
are important, as the variables go out of scope after the closing {
. (The pipe creates a subprocess in which the variables exist.)
add a comment |
If the input field separator is a -
, you should call read
with IFS set appropriately:
echo 'cat-dog-lion' | { IFS=- read first_word second_word third_word other_stuff
case $first_word in
cat) ... ;;
*) ... ;;
esac
case $second_word in
...
esac
...
}
Note that the enclosing {
and }
are important, as the variables go out of scope after the closing {
. (The pipe creates a subprocess in which the variables exist.)
add a comment |
If the input field separator is a -
, you should call read
with IFS set appropriately:
echo 'cat-dog-lion' | { IFS=- read first_word second_word third_word other_stuff
case $first_word in
cat) ... ;;
*) ... ;;
esac
case $second_word in
...
esac
...
}
Note that the enclosing {
and }
are important, as the variables go out of scope after the closing {
. (The pipe creates a subprocess in which the variables exist.)
If the input field separator is a -
, you should call read
with IFS set appropriately:
echo 'cat-dog-lion' | { IFS=- read first_word second_word third_word other_stuff
case $first_word in
cat) ... ;;
*) ... ;;
esac
case $second_word in
...
esac
...
}
Note that the enclosing {
and }
are important, as the variables go out of scope after the closing {
. (The pipe creates a subprocess in which the variables exist.)
answered Nov 22 '18 at 12:06
William PursellWilliam Pursell
130k32206236
130k32206236
add a comment |
add a comment |