ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I'm trying to write a bash script that will find a user in the password file and replace the text in the comment field with something I type in. I've got the finding the user part, but I'm not sure how I would go about replacing the text in the field.
So far I've used grep to find the line in the passwd file containing the username, and awk to display the fifth field.
I've asked the user for input, now I just have to write it to the file.
I'd suggest building the entire line in the shell-script,
remove the matching line in place using sed, and then
adding the new line at the end using an
echo $NEW_LINE >> /etc/passwd ...
It's probably possible to do it in place with sed but
the interaction of extracting the user-variable, sed and
eval may turn out to be quite ugly and hard to read :)
i think gawk would be the tool to use for this, it was created for manipulating fields. gawk could match the first field witht he user name, and then replace field 5 with your comment.
would print out the new passwd file to stdout, that way you can check to make sure it looks right, then run the same command but redirect the output to a tmp file and then replace /etc/passwd
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.