> For the complete documentation index, see [llms.txt](https://alomancy.gitbook.io/guides/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alomancy.gitbook.io/guides/cheat-sheets/bash-cheat-sheets/sed.md).

# Sed

## Sed

### **Remove the 1st line**

```
sed 1d filename
```

### **Remove the first 100 lines (remove line 1-100)**

```
sed 1,100d filename
```

### **Remove lines with string (e.g. 'bbo')**

```
sed "/bbo/d" filename
# case insensitive:
sed "/bbo/Id" filename
```

### **Remove lines whose nth character not equal to a value (e.g. 5th character not equal to 2)**

```
sed -E '/^.{5}[^2]/d'
#aaaa2aaa (you can stay)
#aaaa1aaa (delete!)
```

### **Edit infile (edit and save to file), (e.g. deleting the lines with 'bbo' and save to file)**

```
sed -i "/bbo/d" filename
```

### **When using variable (e.g. $i), use double quotes " "**

```
# e.g. add >$i to the first line (to make a bioinformatics FASTA file)
sed "1i >$i"
# notice the double quotes! in other examples, you can use a single quote, but here, no way!
# '1i' means insert to first line
```

### **Using environment variable and end-of-line pattern at the same time.**

```
# Use backslash for end-of-line $ pattern, and double quotes for expressing the variable
sed -e "\$s/\$/\n+--$3-----+/"
```

### **Delete/remove empty lines**

```
sed '/^\s*$/d'

# or

sed '/^$/d'
```

### **Delete/remove last line**

```
sed '$d'
```

### **Delete/remove last character from end of file**

```
sed -i '$ s/.$//' filename
```

### **Add string to beginning of file (e.g. "\[")**

```
sed -i '1s/^/[/' file
```

### **Add string at certain line number (e.g. add 'something' to line 1 and line 3)**

```
sed -e '1isomething -e '3isomething'
```

### **Add string to end of file (e.g. "]")**

```
sed '$s/$/]/' filename
```

### **Add newline to the end**

```
sed '$a\'
```

### **Add string to beginning of every line (e.g. 'bbo')**

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

### **Add string to end of each line (e.g. "}")**

```
sed -e 's/$/\}\]/' filename
```

### **Add \n every nth character (e.g. every 4th character)**

```
sed 's/.\{4\}/&\n/g'
```

### **Concatenate/combine/join files with a seperator and next line (e.g separate by ",")**

```
sed -s '$a,' *.json > all.json
```

### **Substitution (e.g. replace A by B)**

```
sed 's/A/B/g' filename
```

### **Substitution with wildcard (e.g. replace a line start with aaa= by aaa=/my/new/path)**

```
sed "s/aaa=.*/aaa=\/my\/new\/path/g"
```

### **Select lines start with string (e.g. 'bbo')**

```
sed -n '/^@S/p'
```

### **Delete lines with string (e.g. 'bbo')**

```
sed '/bbo/d' filename
```

### **Print/get/trim a range of line (e.g. line 500-5000)**

```
sed -n 500,5000p filename
```

### **Print every nth lines**

```
sed -n '0~3p' filename

# catch 0: start; 3: step
```

### **Print every odd # lines**

```
sed -n '1~2p'
```

### **Print every third line including the first line**

```
sed -n '1p;0~3p'
```

### **Remove leading whitespace and tabs**

```
sed -e 's/^[ \t]*//'
# Notice a whitespace before '\t'!!
```

### **Remove only leading whitespace**

```
sed 's/ *//'

# notice a whitespace before '*'!!
```

### **Remove ending commas**

```
sed 's/,$//g'
```

### **Add a column to the end**

```
sed "s/$/\t$i/"
# $i is the valuable you want to add

# To add the filename to every last column of the file
for i in $(ls);do sed -i "s/$/\t$i/" $i;done
```

### **Add extension of filename to last column**

```
for i in T000086_1.02.n T000086_1.02.p;do sed "s/$/\t${i/*./}/" $i;done >T000086_1.02.np
```

### **Remove newline\ nextline**

```
sed ':a;N;$!ba;s/\n//g'
```

### **Print a particular line (e.g. 123th line)**

```
sed -n -e '123p'
```

### **Print a number of lines (e.g. line 10th to line 33 rd)**

```
sed -n '10,33p' <filename
```

### **Change delimiter**

```
sed 's=/=\\/=g'
```

### **Replace with wildcard (e.g A-1-e or A-2-e or A-3-e....)**

```
sed 's/A-.*-e//g' filename
```

### **Remove last character of file**

```
sed '$ s/.$//'
```

### **Insert character at specified position of file (e.g. AAAAAA --> AAA#AAA)**

```
sed -r -e 's/^.{3}/&#/' file
```
