Using sed, how do you print the first 'N' characters of a line?
ShellSedGrepShell Problem Overview
Using sed
what is an one liner to print the first n characters? I am doing the following:
grep -G 'defn -test.*' OctaneFullTest.clj | sed ....
Shell Solutions
Solution 1 - Shell
Don't use sed
, use cut
:
grep .... | cut -c 1-N
If you MUST use sed
:
grep ... | sed -e 's/^\(.\{12\}\).*/\1/'
Solution 2 - Shell
colrm x
For example, if you need the first 100 characters:
cat file |colrm 101
It's been around for years and is in most linux's and bsd's (freebsd for sure), usually by default. I can't remember ever having to type apt-get install colrm
.
Solution 3 - Shell
don't have to use grep either
an example:
sed -n '/searchwords/{s/^\(.\{12\}\).*/\1/g;p}' file
Solution 4 - Shell
Strictly with sed:
grep ... | sed -e 's/^\(.\{N\}\).*$/\1/'
Solution 5 - Shell
To print the N first characters you can remove the N+1 characters up to the end of line:
$ sed 's/.//5g' <<< "defn-test"
defn
Solution 6 - Shell
How about head ?
echo alonglineoftext | head -c 9