cat vs sed vs awk

3 years ago by sebastiancarlos to c/linux

RomanRoy 17 points 3 years ago

Okay, so cat is all I need, right?

...right?

path: 0 437122, hotness: undefined, score: 17, children: 0
bionicjoey 7 points 3 years ago

I feel like you can't compare these tools without talking about cut. I personally never use awk, but cut and other coreutils can be used together to achieve much of the same

path: 0 442887, hotness: undefined, score: 7, children: 0
fox 6 points 3 years ago

love cat -n, when working with csv files I often use a command like this to figure out which column I need:

head -n1 file.csv | sed 's/,/\n/g' | cat -n

path: 0 443898, hotness: undefined, score: 6, children: 1
sebastiancarlos 2 points 3 years ago

Sweet

path: 0 443898 444120, hotness: undefined, score: 2, children: 0
narshee 5 points 3 years ago

cat
while read -r l; do echo "$l"; done <

cat -e
while read -r l; do echo "$l"$; done <

cat -n
n=0; while read -r l; do n="$((n+1))"; printf '%5d %s\n' "$n" "$l"; done <

cat -b
n=0; while read -r l; do [ -n "$l" ] && n="$((n+1))" && printf '%5d %s' "$n" "$l"; echo; done <

path: 0 440324, hotness: undefined, score: 5, children: 2
gmg 3 points 3 years ago
$ n=0; while read -r l; do n="$((n+1))" printf '    %d %s\n' "$n" "$l"; done < /etc/os-release 
    0 NAME="openSUSE Tumbleweed"
    0 # VERSION="20230619"
    0 ID="opensuse-tumbleweed"
 [...]
path: 0 440324 441088, hotness: undefined, score: 3, children: 1
narshee 4 points 3 years ago

; was missing

path: 0 440324 441088 441679, hotness: undefined, score: 4, children: 0
BarrierWithAshes 5 points 3 years ago

for me it's grep but i'm amazed how many searching tools there are on Linux. sed, grep, ripgrep, cat, find, walk, sor, locate, awk, etc.

path: 0 451157, hotness: undefined, score: 5, children: 0
flimsyberry 4 points 3 years ago

I'm not sure if I should laugh or cry here. I'll leave it at this: Use the right tool for the job.

path: 0 438601, hotness: undefined, score: 4, children: 0
Mount_Linux 4 points 3 years ago

What is it you want to do?

path: 0 439079, hotness: undefined, score: 4, children: 4
sebastiancarlos 6 points 3 years ago

just trying to get a good mental model of when it's reasonable to use tools like awk instead of simpler unix tools. also further confirming that sed is almost never the best tool except for substitutions.

path: 0 439079 439508, hotness: undefined, score: 6, children: 3
taladar 7 points 3 years ago

Sed and awk have a lot of overlap. Another thing to consider is that neither might be the right choice if you are inside a bash script since spawning a new process in a tight loop can be very expensive and bash's built-in regex operations can have much better performance in those situations.

path: 0 439079 439508 443514, hotness: undefined, score: 7, children: 1
sebastiancarlos 2 points 3 years ago

That's a good point. If I need something like a bash script I tend to stick to bash features as much as possible.

path: 0 439079 439508 443514 443681, hotness: undefined, score: 2, children: 0
Mount_Linux 4 points 3 years ago

Ok, I would say... cat is mostly used for output of files, and concatenating files. sed and awk are good at reshaping the output of files or piped std input. They both require some time to learn, but it is worth going back to them.

path: 0 439079 439508 439841, hotness: undefined, score: 4, children: 0
ZachAR3 3 points 3 years ago

Thanks for the info!

path: 0 447144, hotness: undefined, score: 3, children: 0
falsem 2 points 3 years ago

I pretty much always use these commands unless I need regex or something. I think it's a lot more maintainable by other people since awk and sed have their own unique syntax.

path: 0 446271, hotness: undefined, score: 2, children: 0
linux
linux

@lemmy.ml

login for more options
68076
9447
5174

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

  • Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
  • No misinformation
  • No NSFW content
  • No hate speech, bigotry, etc

Related Communities

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

go to feed...