diff --git a/README.md b/README.md index 1343fe6..52056e9 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud). -_1112 TILs and counting..._ +_1113 TILs and counting..._ --- @@ -959,6 +959,7 @@ _1112 TILs and counting..._ - [Equivalence Classes Of Repetition MetaChars](sed/equivalence-classes-of-repetition-metachars.md) - [Extract Value From Command Output With Sed](sed/extract-value-from-command-output-with-sed.md) - [Grab All The Method Names Defined In A Ruby File](sed/grab-all-the-method-names-defined-in-a-ruby-file.md) +- [Grab The First Line Of A File](sed/grab-the-first-line-of-a-file.md) - [OSX sed Does Regex A Bit Different](sed/osx-sed-does-regex-a-bit-different.md) - [Output Only Lines Involved In A Substitution](sed/output-only-lines-involved-in-a-substitution.md) - [Reference A Capture In The Regex](sed/reference-a-capture-in-the-regex.md) diff --git a/sed/grab-the-first-line-of-a-file.md b/sed/grab-the-first-line-of-a-file.md new file mode 100644 index 0000000..e35605c --- /dev/null +++ b/sed/grab-the-first-line-of-a-file.md @@ -0,0 +1,29 @@ +# Grab The First Line Of A File + +You can grab the first line of a file with `sed` using either the `p` (print) +command or the `d` (delete) command. + +First, the _print_ command can be told to print the line matching the line +number `1`. That combined with the `-n` flag, which suppresses all lines not +explicitly printed, will print just the first line in the file. + +```bash +$ sed '1 p' README.md +# TIL +``` + +Second, the _delete_ command can be told to delete all lines that aren't the +first (`1`) line. + +```bash +$ sed '1! d' README.md +# TIL +``` + +The `1` will match on the first line. By following it with `!`, that will +negate it so that it represents all lines except `1`. + +See `man sed` for more details. + +Note: there are more efficient ways, not using `sed`, to get the first line in +a file. This is an exercise in using and understanding some `sed` features.