My favourite shell command for today – prepend lines of text in seconds
Tags: prependlinesoftext, shellscripting
Published: 2017-12-26 16:01:40

---
title: "My favourite shell command for today – prepend lines of text in seconds"
published: true
tags: prepend lines of text, shell scripting
canonical_url: https://pauljacobson.me/2017/11/13/my-favourite-shell-command-for-today-prepend-lines-of-text-in-seconds/
---

I’m working on a lead generation project for a client this week that, interestingly, led me to a simple, time-saving shell command that enables me to prepend lines of text with a simple quotation mark. It’s more impressive than it sounds because it saved me considerably more time than it took to write and run it.

One of the methods I’m using to find leads is by running Boolean searches that incorporate multiple search parameters. The search terms are pretty long and look a little like this: `"Managing director" OR "sales director" OR "sales manager" OR "procurement manager" OR ...`

My starting point is generally a list of search parameters that I need to convert into a Boolean search query. For example:

```
Managing director

sales director

sales manager

procurement manager
```

Except the lists are a lot longer. I started off by adding my lists to [VS Code](https://code.visualstudio.com/) because working with this sort of thing in plain text greatly simplifies the process. One of the things I love about VS Code is that you can add a cursor to the end of each line in the text you select. This probably comes from Sublime Text and it’s an awesome feature.

The reason why this comes in handy is because I want to place each of those search terms into quotes so I can string them together with Boolean operators like `AND`, `OR`, and `NOT`.

The challenge I found myself facing is how to move the cursor to the _beginning_ of each like to add the opening quotation mark? Because each line is a different length, I couldn’t just move the cursors from the end of each line to the beginning. I also [didn’t want to overwrite the feature](https://marketplace.visualstudio.com/items?itemName=kaiwood.insert-cursor-at-beginning-of-each-line-selected) that lets me add cursors to the end of each line, either.

I thought that there must be some sort of shell command or script I could run that would parse the text file and add an opening quotation mark to the beginning of each line. It turns out [there is](https://stackoverflow.com/questions/2099471/add-a-prefix-string-to-beginning-of-each-line) (of course). Like many shell commands, it is deceptively simple and does exactly what it says on the box (if there was a box).

There are three options (probably more if you want something different) that I looked at:

```
sed -e 's/^/prefix/' file

# If you want to edit the file in-place
sed -i -e 's/^/prefix/' file

# If you want to create a new file
sed -e 's/^/prefix/' file > file.new
```

I went with option 3 and simply replaced the word `prefix` with my opening quotation mark and ran the command. I output the command to a new file because I didn’t want to destroy my original list. It ran instantly and when I opened the new file, I had quotation marks at the beginning of each line.

From there it was a relatively simple matter to add cursors to the end of each line to add my Boolean operator for my searches.

Using shell commands may seem absurdly geeky when we have GUIs for just about everything, but the more I learn about shell scripting, the more it amazes me. This particular line of code seems innocuous enough but it did something for me in seconds that would otherwise have taken a lot longer.