user3470313
user3470313

Reputation: 323

Searching patterns within txt file with post-processing

I have a long txt files consisted of

ATOM   5010 HD13 LEU   301       0.158  20.865  10.630  1.00  0.00      PROA
ATOM   5011  CD2 LEU   301       1.684  22.404  12.349  1.00  1.00      PROA
ATOM   5012 HD21 LEU   301       2.233  22.501  13.310  1.00  0.00      PROA
ATOM   5013 HD22 LEU   301       1.584  23.412  11.894  1.00  0.00      PROA
ATOM   5014 HD23 LEU   301       2.267  21.744  11.672  1.00  0.00      PROA
ATOM   5015  C   LEU   301      -0.687  23.995  15.639  1.00  0.00      PROA
ATOM   5016  O   LEU   301      -1.791  24.341  15.139  1.00  0.00      PROA
ATOM   5017  NT  LEU   301      -0.211  24.391  16.849  1.00  1.00      PROA
ATOM   5018  HT1 LEU   301       0.679  24.065  17.168  1.00  0.00      PROA
ATOM   5019  HT2 LEU   301      -0.752  25.007  17.422  1.00  0.00      PROA
ATOM   5020  SOD SOD   302       1.519   2.284   1.361  1.00  0.00      HETA

From this file I need to copy the string where the third column = SOD

  ATOM   5020  SOD SOD   302       1.519   2.284   1.361  1.00  0.00      HETA

And past it to the separate txt file sod.txt (it should consist only one line which is equl to the original)

I could use a solution via combination of awk and sed commands!

Upvotes: 1

Views: 55

Answers (3)

Waveter
Waveter

Reputation: 980

You can try this

awk '{if ($3 == "SOD") print $0;}' input.txt >sod.txt

Upvotes: 1

James Brown
James Brown

Reputation: 37454

In awk:

$ awk '$3=="SOD"' file # > new_file # uncomment to write to a new file
ATOM   5020  SOD SOD   302       1.519   2.284   1.361  1.00  0.00      HETA

Upvotes: 1

SLePort
SLePort

Reputation: 15461

You can use the sed write(w command):

sed '/\([^ \t]*\)\{2\}SOD/!d; w outputfile' file

Upvotes: 2

Related Questions