Xiaoshen Li wrote:
Dear All,
Thank you very much for all your responses. I am sorry. My file is a little different now. It is like following:

1  data_34.dat pre= -7872.11914060  post= -7812.80517600  diff= 59.31396460
2  data_5.dat  pre= -7986.76147466  post= -7926.94091800  diff= 59.82055666
3  data_16.dat pre= -8117.66357420  post= -8057.25097700  diff= 60.41259720
4  data_36.dat pre= -7628.28979490  post= -7564.08691400  diff= 64.20288090
5  data_18.dat pre= -8145.31860358  post= -8078.61328100  diff= 66.70532258

How can I use regular expression to get:
data_34.dat
data_5.dat
data_16.dat
..

Thank you very much. I greatly appreciate it.






        :1,$s/^.\{-} \([^[:blank:]]\+\.dat\) .*/\1

(untested)
Meaning
        :       start Ex command
        1,$     from first to last line
        s       substitute
        /       start "from" pattern
        ^       start-of-line
        .\{-}   anything but end-of-line, as few as possible
                one space
        \(      sets the following apart until \)
        [^[:blank:]]\+  one or more non-spaces non-tabs, as many as possible
        \.      one dot
        dat     dat
        \)      end of marked-off part
                one space
        .*      anything but line break, as many as possible
        /       end "from", start "replace by"
        \1      whatever was matched between (first pair of) \( \)


HTH,
Tony.

Reply via email to