Hi, I'm writing a ksh script and trying to use an awk / sed / or perl one-liner to remove the last 4 characters of a line in a file if it begins with a period.
Here is the contents of the file... the column in which I want to remove the last 4 characters is the last column. ($6 in awk). I've tried a few commands but I'm totally stumped. Thanks for any assistance.
QUX | LIBMEM.SYS.OA | 20110920 110704.951
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711.503
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714.413
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601.102
WS | LIBMEM.SYS.OA | 20110923 084845.744
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839.880
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
Desired file contents:
QUX | LIBMEM.SYS.OA | 20110920 110704
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601
WS | LIBMEM.SYS.OA | 20110923 084845
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
Thanks!
sed 's/[.][0-9]*$//' myFile
1 Like
Awesome! worked perfect, thanks so much.
awk '{sub(/\.[0-9]*$/,"")}11' input_file
--ahamed
ejazsyed:
any example in AWK ?
similar idea:
nawk '{gsub("[.][0-9]*$", "");print}' myFile
nawk -F\| 'BEGIN{OFS="|"}{if($NF~/\./)$NF=substr($NF,1,index($NF,".")-1); print}' test
QUX | LIBMEM.SYS.OA | 20110920 110704
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601
WS | LIBMEM.SYS.OA | 20110923 084845
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
---------- Post updated at 08:23 AM ---------- Previous update was at 08:19 AM ----------
$ perl -lane '$_=~s/[.][0-9]*$//; print $_' test
QUX | LIBMEM.SYS.OA | 20110920 110704
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601
WS | LIBMEM.SYS.OA | 20110923 084845
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
$
$ cat f12
QUX | LIBMEM.SYS.OA | 20110920 110704.951
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711.503
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714.413
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601.102
WS | LIBMEM.SYS.OA | 20110923 084845.744
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839.880
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
$
$ cut -c1-50 f12
QUX | LIBMEM.SYS.OA | 20110920 110704
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601
WS | LIBMEM.SYS.OA | 20110923 084845
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
$
$ perl -plne 's/\.\d+$//' f12
QUX | LIBMEM.SYS.OA | 20110920 110704
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601
WS | LIBMEM.SYS.OA | 20110923 084845
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
$
$ perl -plne 's/^(.*?)\.\d+$/$1/' f12
QUX | LIBMEM.SYS.OA | 20110920 110704
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601
WS | LIBMEM.SYS.OA | 20110923 084845
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
$
$ perl -plne 'substr($_,50)=""' f12
QUX | LIBMEM.SYS.OA | 20110920 110704
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601
WS | LIBMEM.SYS.OA | 20110923 084845
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
$
$ perl -F"\." -plane '$_=join".",@F[0..2]' f12
QUX | LIBMEM.SYS.OA | 20110920 110704
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601
WS | LIBMEM.SYS.OA | 20110923 084845
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
$
$ perl -plne '$_=unpack("A50",$_)' f12
QUX | LIBMEM.SYS.OA | 20110920 110704
SA | LIBMEM.SYS.OA | 20110920 110706
SD | LIBMEM.SYS.OA | 20110920 110708
SP | LIBMEM.SYS.OA | 20110920 110711
SR | LIBMEM.SYS.OA | 20110920 110713
SYSTEM | LIBMEM.SYS.OA | 20110920 110714
UB | LIBMEM.SYS.OA | 20110920 110716
VDRDAILY | LIBMEM.SYS.OA | 20110920 110720
VDRWKLY | LIBMEM.SYS.OA | 20110920 110831
VP | LIBMEM.SYS.OA | 20110920 110834
WC | LIBMEM.SYS.OA | 20110922 131601
WS | LIBMEM.SYS.OA | 20110923 084845
AD | LIBMEM.SYS.OA | 20110920 112837
AQ | LIBMEM.SYS.OA | 20110920 112839
DD | LIBMEM.SYS.OA | 20110920 112840
DP | LIBMEM.SYS.OA | 20110920 112842
$
$
tyler_durden
sed 's/\....$//' infile
awk -F. NF=3 OFS=. infile
By Sed
echo "aaa.12345" | sed -r -n 's/\..{4,}$//p'