I have a file name test
,
it contains a String James Bond 007
,
and i want to print only James Bond
.
I tried the following commands:
$ strings -n 2 test
$ sed -n '/James/,/Bond/p' test
$ awk '{print substr($1,10)}' test
I have a file name test
,
it contains a String James Bond 007
,
and i want to print only James Bond
.
I tried the following commands:
$ strings -n 2 test
$ sed -n '/James/,/Bond/p' test
$ awk '{print substr($1,10)}' test
To print the first two words, you can use awk
:
awk '{print $1, $2}' test
To print the first ten characters, you can put the file contents in a variable, then use the bash
substring operation:
contents=$(cat test)
echo "${contents:0:10}"
Or in awk
:
awk '{print substr($0, 1, 10)}' test
Notice that $0
means the whole line, and you have to give both a starting index and length to substr()
. Indexes in awk
start at 1
rather than 0
.
In sed
, /James/,/Bond/
is a line range expression; it processes all the lines starting from a line containing James
until a line containing Bond
. It doesn't process just part of the lines.