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.