How do I replace words with increasing numbers?












0















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?










share|improve this question









New contributor




LittleG is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





















  • 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
















0















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?










share|improve this question









New contributor




LittleG is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





















  • 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














0












0








0








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?










share|improve this question









New contributor




LittleG is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












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






share|improve this question









New contributor




LittleG is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




LittleG is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 51 mins ago







LittleG













New contributor




LittleG is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 56 mins ago









LittleGLittleG

31




31




New contributor




LittleG is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





LittleG is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






LittleG is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.













  • 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





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










1 Answer
1






active

oldest

votes


















1














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





share|improve this answer


























  • 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











  • In the first solution, why do you add a space between the two <?

    – LittleG
    7 mins ago











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.










draft saved

draft discarded


















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









1














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





share|improve this answer


























  • 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











  • In the first solution, why do you add a space between the two <?

    – LittleG
    7 mins ago
















1














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





share|improve this answer


























  • 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











  • In the first solution, why do you add a space between the two <?

    – LittleG
    7 mins ago














1












1








1







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





share|improve this answer















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






share|improve this answer














share|improve this answer



share|improve this answer








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 (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



















  • 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











  • 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










LittleG is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

Loup dans la culture

How to solve the problem of ntp “Unable to contact time server” from KDE?

Connection limited (no internet access)