- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
149 lines
9.2 KiB
Plaintext
149 lines
9.2 KiB
Plaintext
Episode: 953
|
|
Title: HPR0953: LiTS 003: cut
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0953/hpr0953.mp3
|
|
Transcribed: 2025-10-08 05:28:33
|
|
|
|
---
|
|
|
|
Welcome to Linux in the Shell Episode 3, the Cut Command.
|
|
My name is Dan Washco, I will be your host.
|
|
As always, if you have not read the website, I strongly encourage you to do so over at
|
|
linuxinachel.org, either before or after listening to this audio, to solidify the command
|
|
in your mind.
|
|
I'd also like to give a shout out to Hacker Public Radio and thank them very much for hosting
|
|
and all their support.
|
|
Let's talk about the Unix Cut Command.
|
|
It's one of the oldest commands available and it's a very simple command.
|
|
What it does is it removes sections from each line of a file.
|
|
Cut command can also be used to work on streams as opposed to just a single file.
|
|
But we'll probably be mostly talking about working with a file.
|
|
Now, it's very simple command.
|
|
You can do some pretty powerful stuff with Cut, but it in no way does it approach the
|
|
flexibility and power of a command like AUK, but we'll get to AUK in a later episode.
|
|
So let's get back to Cut.
|
|
Cut works on either fields, characters, or bytes.
|
|
And the difference between those two is that a character and a byte are pretty much
|
|
the same thing for most intents and purposes.
|
|
Unless you're working on a multi-bites system, a character set, pretty much one character
|
|
is going to equal one byte.
|
|
Now I have seen the dash c, which stands for character, also called column.
|
|
And I don't think that's right, but I've seen it written as column.
|
|
But going back, it's always been character from what I can understand.
|
|
So to reiterate, Cut works on characters, dash c, bytes, dash b, or fields, dash f.
|
|
And so let's start at the most basic, the character.
|
|
If you were to take a file, let's say the file has one line in it that says hello, how
|
|
are you?
|
|
And you were to cut dash c, one space, the file name.
|
|
You're going to get the first character in that file.
|
|
Now if you were to say dash c, one comma, two comma, three, you're going to get the first
|
|
three characters in that file.
|
|
Bite works the same way, dash b.
|
|
So if you were to do cut dash b, one, you get the first byte, cut dash b, one comma, two
|
|
comma, three, you get the first three bytes in that character.
|
|
Now of course, like a lot of other commands that we've talked about in the past, instead
|
|
of specifying each individual character field, you could also specify ranges.
|
|
So instead of saying one comma, two comma, three, you can do one dash three.
|
|
And that would specify the range of one to three.
|
|
If you wanted to cut from a single point to the end of a file, you would just specify
|
|
that point.
|
|
For instance, let's say the 15th character to the end of the file, it would be 15 dash
|
|
and you don't have to have an ending number.
|
|
That would cut everything from the 15th character on.
|
|
Now the reverse of that is also applicable.
|
|
You want to cut everything from the beginning to the 15th character.
|
|
It would be dash 15.
|
|
So there wouldn't be a preceding number, it would just be dash 15.
|
|
Now the other delimiter that I had not talked about yet is field.
|
|
Field is a little different than character and bite in that you can specify the delimiter
|
|
as opposed to just using characters and bites.
|
|
Now what I mean by delimiter is, for instance, if you had a comma separated value file
|
|
as CSV file, every entry in that file is separated by a comma.
|
|
So the delimiter in there is the comma.
|
|
Now sometimes it could be a tad character, it could be a colon, it could be a semicolon,
|
|
it could be whatever you want it to be, but that's the delimiter.
|
|
So you can specify the delimiter with a dash D.
|
|
If you don't specify the delimiter, it defaults to tab.
|
|
But anyway, the dash D specifies the delimiter and it works in conjunction with dash F, which
|
|
is the fields.
|
|
So what you define as the delimiter, and remember it's either with the dash D or tab
|
|
by default, becomes what the file, the line gets cut on.
|
|
So if you had a comma separated file with, say, a bunch of fruit names in it, like apple,
|
|
pear, cherry, lemon, and you add each one of those separated by a comma, you would specify
|
|
cut space dash D. Now I always put my delimiter in double quotes.
|
|
So open quote, open double quote, comma, close double quote, and then space dash F and the
|
|
fields that you want.
|
|
Again, you can specify them individually, like one comma, two comma, three, or a range
|
|
of one to three, or three, two to four, however you want to do it.
|
|
And what that will do then is it will, the output would be the fields defined by, delimited
|
|
by a comma, fields one, two, and three.
|
|
So you would see apple, pear, and orange, I believe is what I said, or is if it was,
|
|
you want to do two to four, it would be pear, orange, cherry, and you would have, that's
|
|
how you work.
|
|
Now, pay attention that when you're delimiting the fields, when you're cutting on
|
|
the fields or bytes or characters, it doesn't start with zero, it starts with one.
|
|
So the first character, first byte, first field is one, then two, and three, and so on,
|
|
until the end.
|
|
There are a few other flags or options that I would like to reference on the cut command.
|
|
One of them is the dash compliment, or more accurately, dash dash compliment.
|
|
But the dash, dash compliment flag does, is it does the reverse of what you're cutting,
|
|
it takes the compliment of the set that you have cut.
|
|
So if you specify that you wanted, and if you had a 15 characters in the file, you specified
|
|
you wanting characters one through seven, you would get the first seven characters, but
|
|
if you added the compliment to that compliment flag, you would get characters eight through
|
|
15, compliment, it takes the opposite of what you have selected.
|
|
Now another flag is the output delimiter, which equals string, and allows you to change
|
|
the output delimiter to something else.
|
|
So for instance, if you had a stream of numbers, one, the seven separated by colons, and
|
|
you specified the delimiter and cut dash D to be the colon, and then you want to fields
|
|
two from five, it would output two, colon three, colon four, colon five.
|
|
You still get the delimiter.
|
|
Well you can change that delimiter by specifying dash dash output, dash delimiter, equals, and
|
|
then some string.
|
|
So for instance, you could say output delimiter equals comma, and instead of it being one,
|
|
colon two, colon three, colon four, colon five, you would get one, comma two, comma three,
|
|
comma four, comma five.
|
|
So you can change the output delimiter on how it separates the characters in a field cut.
|
|
The final caveat I want to say about using the dash F or field delimiter is that by default,
|
|
when it comes to a line without any delimitors in it, it will display that line as it is.
|
|
So if you had a comma separated file, and each line had a list of something separated
|
|
by commas, except you had a line in there that was the sentence, hey, this is a great idea.
|
|
It would output that whole line, this is a great idea, when it came to that line, because
|
|
there's no delimitors on it, there's nothing to break it or whatever.
|
|
So it will specify that as default, and you can, the dash S or the suppress option is
|
|
what you can use, it's called suppress, but it's a dash S or dash dash only dash delimited
|
|
will specify, it will only output lines with delimited characters in it.
|
|
So to ignore that line, if that's what you want to do, so just be aware of that little
|
|
caveat with fields.
|
|
Now that's the entire cut command in a nutshell, right there.
|
|
There really isn't much more to it than that.
|
|
It's a simple, quick, dirty little utility that will allow you to cut up different pieces
|
|
of either a stream or a file to be used in other ways.
|
|
I use the cut command a lot with, sometimes with log files, where if I'm looking for something
|
|
in a log file, that I will just do a rep and pass that to cut, because instead of getting
|
|
a whole lot of output lines and everything, I'll just cut on the colon delimiter and get
|
|
just the name of the file, I can do the cut, use the cut command, dirty to get the name
|
|
of the file.
|
|
I've used the cut command to chop up lines and scripts and stuff to get file names and
|
|
make directories and stuff like that, and it's a pretty handy command.
|
|
If you're ever thinking about, wow, I really need to cut something up here and take pieces
|
|
of that string and do something with the different pieces of cut command might be the way
|
|
to go.
|
|
Simple, fast, and elegant.
|
|
Thank you very much.
|
|
I hope you enjoyed this entry.
|
|
Go over to the website to read up on the cut command and also to watch the video.
|
|
Thanks a lot, and we'll see you next time for another wonderful Linux command.
|
|
You have been listening to Hacker Public Radio at Hacker Public Radio.
|
|
We are a community podcast network that releases shows every weekday Monday through Friday.
|
|
Today's show, like all our shows, was contributed by a HBR listener like yourself.
|
|
If you ever consider recording a podcast, then visit our website to find out how easy
|
|
it really is.
|
|
Hacker Public Radio was founded by the digital dog pound and the infonomicum computer
|
|
club.
|
|
HBR is funded by the binary revolution at binref.com.
|
|
All binref projects are crowd-responsive by linear pages.
|
|
From shared hosting to custom private clouds, go to lunarpages.com for all your hosting
|
|
needs.
|
|
Unless otherwise stasis, today's show is released under a creative commons, attribution,
|
|
share alike, free those own license.
|