this post was submitted on 17 Nov 2023
51 points (94.7% liked)

Linux

48190 readers
1313 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

Code and comments

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 6 points 1 year ago (2 children)

My 5 cents:

  1. When piping output of find to xargs, always use -print0 option of find and -0 option of xargs. This allows processing files with any allowed characters in names (spaces, new lines etc.). (However I prefer -exec.)

  2. There's an i command to insert a line in sed, it is better to use it instead of s/^/...\n/. It makes code more readable (if we can talk about readability of sed code, huh).

  3. If you want to split a delimiter separated line and print some field, you need cut. Keep awk for more complicated tasks.

[–] [email protected] 2 points 1 year ago (1 children)
  1. If you want to split a delimiter separated line and print some field, you need cut. Keep awk for more complicated tasks.

Depends on the delimiter too! For anyone else reading this, sed accepts many kinds of delimiters. sed "s@thing@thing2@g" file.txt is valid. I use this sometimes when parsing/replacing text with lots of slashes (like directory lists) so I can avoid escaping a ton of stuff.

[–] [email protected] 1 points 1 year ago (2 children)

I know, but it is not the case I was talking about. I meant widely used commands like awk '{print $2}' that can be replaced with cut -f2.

[–] [email protected] 3 points 1 year ago

I know you know, as you already demonstrated your higher understanding. I just wanted to add a little bonus trick for anyone reading that doesn't know, and is learning from your examples.

[–] [email protected] 1 points 1 year ago

the two are valid and no one is more correct than the other sooo...

[–] [email protected] 1 points 1 year ago

agree with one and two and younger me would have agreed with your third point but I think I don't anymore.

yes cut is the simpler and mostly functional tool you need for those tasks.

but it is just so common to need a slight tweak or to want to substitute something or to want to do a specific regex match or weird multi character delimiter or something and you can do it all easily in awk instead of having to pipe three extra times to do everything with the simplest tool.