How do I replace words with increasing numbers?
For example, the only thing in file.txt looks like this:
xxxxxxxxxHAHAxxxxxxHOHOxxxxxxx
I hope to replace HAHA with seq 1 3 and replace HOHO with seq 5 7, so the output should be:
xxxxxxxxx1xxxxxx5xxxxxxx
xxxxxxxxx2xxxxxx6xxxxxxx
xxxxxxxxx3xxxxxx7xxxxxxx
What I did:
for i in $(seq 1 3)
do sed "s/HAHA/$i/g" file.txt
for i in $(seq 5 7)
do sed "s/HOHO/$i/g" file.txt
done
done > new.txt
But new.txt doesn't show what I expected. How should I change the code?
bash shell-script text-processing
New contributor
add a comment |
For example, the only thing in file.txt looks like this:
xxxxxxxxxHAHAxxxxxxHOHOxxxxxxx
I hope to replace HAHA with seq 1 3 and replace HOHO with seq 5 7, so the output should be:
xxxxxxxxx1xxxxxx5xxxxxxx
xxxxxxxxx2xxxxxx6xxxxxxx
xxxxxxxxx3xxxxxx7xxxxxxx
What I did:
for i in $(seq 1 3)
do sed "s/HAHA/$i/g" file.txt
for i in $(seq 5 7)
do sed "s/HOHO/$i/g" file.txt
done
done > new.txt
But new.txt doesn't show what I expected. How should I change the code?
bash shell-script text-processing
New contributor
By the way, I added four spaces to each line of my code, but it doesn't format like what it should be like
– LittleG
55 mins ago
add a comment |
For example, the only thing in file.txt looks like this:
xxxxxxxxxHAHAxxxxxxHOHOxxxxxxx
I hope to replace HAHA with seq 1 3 and replace HOHO with seq 5 7, so the output should be:
xxxxxxxxx1xxxxxx5xxxxxxx
xxxxxxxxx2xxxxxx6xxxxxxx
xxxxxxxxx3xxxxxx7xxxxxxx
What I did:
for i in $(seq 1 3)
do sed "s/HAHA/$i/g" file.txt
for i in $(seq 5 7)
do sed "s/HOHO/$i/g" file.txt
done
done > new.txt
But new.txt doesn't show what I expected. How should I change the code?
bash shell-script text-processing
New contributor
For example, the only thing in file.txt looks like this:
xxxxxxxxxHAHAxxxxxxHOHOxxxxxxx
I hope to replace HAHA with seq 1 3 and replace HOHO with seq 5 7, so the output should be:
xxxxxxxxx1xxxxxx5xxxxxxx
xxxxxxxxx2xxxxxx6xxxxxxx
xxxxxxxxx3xxxxxx7xxxxxxx
What I did:
for i in $(seq 1 3)
do sed "s/HAHA/$i/g" file.txt
for i in $(seq 5 7)
do sed "s/HOHO/$i/g" file.txt
done
done > new.txt
But new.txt doesn't show what I expected. How should I change the code?
bash shell-script text-processing
bash shell-script text-processing
New contributor
New contributor
edited 51 mins ago
LittleG
New contributor
asked 56 mins ago
LittleGLittleG
31
31
New contributor
New contributor
By the way, I added four spaces to each line of my code, but it doesn't format like what it should be like
– LittleG
55 mins ago
add a comment |
By the way, I added four spaces to each line of my code, but it doesn't format like what it should be like
– LittleG
55 mins ago
By the way, I added four spaces to each line of my code, but it doesn't format like what it should be like
– LittleG
55 mins ago
By the way, I added four spaces to each line of my code, but it doesn't format like what it should be like
– LittleG
55 mins ago
add a comment |
1 Answer
1
active
oldest
votes
Here's one way you could do it, using the bash
built-in read
command's ability to read from different file descriptors:
while read -u3 i && read -u4 j; do
sed -e "s/HAHA/$i/" -e "s/HOHO/$j/" file.txt
done > new.txt 3< <(seq 1 3) 4< <(seq 5 7)
If you don't specifically need to use different seq
processes, you could use a simple single loop + some shell arithmetic:
for i in $(seq 1 3); do
sed -e "s/HAHA/$i/" -e "s/HOHO/$((i+4))/" file.txt
done > new.txt
I wonder why you use 3 and 4 after the -u. Did you just choose these numbers randomly?
– LittleG
27 mins ago
@LittleG they are the first two numbers after the terminal's standard input / output / error streams (fd0
,1
,2
) that are available as file descriptors
– steeldriver
21 mins ago
In the first solution, why do you add a space between the two <?
– LittleG
7 mins ago
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
LittleG is a new contributor. Be nice, and check out our Code of Conduct.
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
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f504187%2fhow-do-i-replace-words-with-increasing-numbers%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Here's one way you could do it, using the bash
built-in read
command's ability to read from different file descriptors:
while read -u3 i && read -u4 j; do
sed -e "s/HAHA/$i/" -e "s/HOHO/$j/" file.txt
done > new.txt 3< <(seq 1 3) 4< <(seq 5 7)
If you don't specifically need to use different seq
processes, you could use a simple single loop + some shell arithmetic:
for i in $(seq 1 3); do
sed -e "s/HAHA/$i/" -e "s/HOHO/$((i+4))/" file.txt
done > new.txt
I wonder why you use 3 and 4 after the -u. Did you just choose these numbers randomly?
– LittleG
27 mins ago
@LittleG they are the first two numbers after the terminal's standard input / output / error streams (fd0
,1
,2
) that are available as file descriptors
– steeldriver
21 mins ago
In the first solution, why do you add a space between the two <?
– LittleG
7 mins ago
add a comment |
Here's one way you could do it, using the bash
built-in read
command's ability to read from different file descriptors:
while read -u3 i && read -u4 j; do
sed -e "s/HAHA/$i/" -e "s/HOHO/$j/" file.txt
done > new.txt 3< <(seq 1 3) 4< <(seq 5 7)
If you don't specifically need to use different seq
processes, you could use a simple single loop + some shell arithmetic:
for i in $(seq 1 3); do
sed -e "s/HAHA/$i/" -e "s/HOHO/$((i+4))/" file.txt
done > new.txt
I wonder why you use 3 and 4 after the -u. Did you just choose these numbers randomly?
– LittleG
27 mins ago
@LittleG they are the first two numbers after the terminal's standard input / output / error streams (fd0
,1
,2
) that are available as file descriptors
– steeldriver
21 mins ago
In the first solution, why do you add a space between the two <?
– LittleG
7 mins ago
add a comment |
Here's one way you could do it, using the bash
built-in read
command's ability to read from different file descriptors:
while read -u3 i && read -u4 j; do
sed -e "s/HAHA/$i/" -e "s/HOHO/$j/" file.txt
done > new.txt 3< <(seq 1 3) 4< <(seq 5 7)
If you don't specifically need to use different seq
processes, you could use a simple single loop + some shell arithmetic:
for i in $(seq 1 3); do
sed -e "s/HAHA/$i/" -e "s/HOHO/$((i+4))/" file.txt
done > new.txt
Here's one way you could do it, using the bash
built-in read
command's ability to read from different file descriptors:
while read -u3 i && read -u4 j; do
sed -e "s/HAHA/$i/" -e "s/HOHO/$j/" file.txt
done > new.txt 3< <(seq 1 3) 4< <(seq 5 7)
If you don't specifically need to use different seq
processes, you could use a simple single loop + some shell arithmetic:
for i in $(seq 1 3); do
sed -e "s/HAHA/$i/" -e "s/HOHO/$((i+4))/" file.txt
done > new.txt
edited 17 mins ago
answered 38 mins ago
steeldriversteeldriver
36.5k35286
36.5k35286
I wonder why you use 3 and 4 after the -u. Did you just choose these numbers randomly?
– LittleG
27 mins ago
@LittleG they are the first two numbers after the terminal's standard input / output / error streams (fd0
,1
,2
) that are available as file descriptors
– steeldriver
21 mins ago
In the first solution, why do you add a space between the two <?
– LittleG
7 mins ago
add a comment |
I wonder why you use 3 and 4 after the -u. Did you just choose these numbers randomly?
– LittleG
27 mins ago
@LittleG they are the first two numbers after the terminal's standard input / output / error streams (fd0
,1
,2
) that are available as file descriptors
– steeldriver
21 mins ago
In the first solution, why do you add a space between the two <?
– LittleG
7 mins ago
I wonder why you use 3 and 4 after the -u. Did you just choose these numbers randomly?
– LittleG
27 mins ago
I wonder why you use 3 and 4 after the -u. Did you just choose these numbers randomly?
– LittleG
27 mins ago
@LittleG they are the first two numbers after the terminal's standard input / output / error streams (fd
0
, 1
, 2
) that are available as file descriptors– steeldriver
21 mins ago
@LittleG they are the first two numbers after the terminal's standard input / output / error streams (fd
0
, 1
, 2
) that are available as file descriptors– steeldriver
21 mins ago
In the first solution, why do you add a space between the two <?
– LittleG
7 mins ago
In the first solution, why do you add a space between the two <?
– LittleG
7 mins ago
add a comment |
LittleG is a new contributor. Be nice, and check out our Code of Conduct.
LittleG is a new contributor. Be nice, and check out our Code of Conduct.
LittleG is a new contributor. Be nice, and check out our Code of Conduct.
LittleG is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f504187%2fhow-do-i-replace-words-with-increasing-numbers%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
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
Required, but never shown
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
Required, but never shown
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
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
By the way, I added four spaces to each line of my code, but it doesn't format like what it should be like
– LittleG
55 mins ago