Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Replace all decimal values in a column Post 302937209 by drl on Wednesday 4th of March 2015 08:03:06 AM
Old 03-04-2015
Hi.

There is a perl method for keeping field separators intact:
Code:
#!/usr/bin/env bash

# @(#) s1	Demonstrate perl method of keeping field separators intact.

# Utility functions: print-as-echo, print-line-with-visual-space, debug.
# export PATH="/usr/local/bin:/usr/bin:/bin"
LC_ALL=C ; LANG=C ; export LC_ALL LANG
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C perl

FILE=${1-data1}

pl " Input data file $FILE:"
pe " ( Separators: any run of dash, TAB SPACE, comma, equal-sign)"
od -bc $FILE

pl " Results, change data field 6 to \".\", keeping all separators:"
./p1 data1 |
od -bc

pl " perl code:"
cat p1

exit 0

producing:
Code:
$ ./s1

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 2.6.26-2-amd64, x86_64
Distribution        : Debian 5.0.8 (lenny, workstation) 
bash GNU bash 3.2.39
perl 5.10.0

-----
 Input data file data1:
 ( Separators: any run of dash, TAB SPACE, comma, equal-sign)
0000000 141 054 142 055 143 040 040 144 011 145 011 011 146 011 040 040
          a   ,   b   -   c           d  \t   e  \t  \t   f  \t        
0000020 147 075 150 012
          g   =   h  \n
0000024

-----
 Results, change data field 6 to ".", keeping all separators:
0000000 141 054 142 055 143 040 040 144 011 145 011 011 056 011 040 040
          a   ,   b   -   c           d  \t   e  \t  \t   .  \t        
0000020 147 075 150 012
          g   =   h  \n
0000024

-----
 perl code:
#!/usr/bin/env perl

# @(#) p1	Demonstrate method for keeping field separators.
# Field 10 because array index begins at 0, and there is no
# leading separator on the line. So line field 6 is at 11-1 -> 10.

use warnings;
use strict;

my ( $debug, $i, @field );

# Interchange next 2 lines to enable printing of all fields and
# separators in individual components of array "field".
$debug = 1;
$debug = 0;

while (<>) {
  chomp;
  @field = split /([-\s,=]+)/;
  if ($debug) {
    for ( $i = 0; $i < $#field; $i++ ) {
      print STDERR "$i,\"$field[$i]\"\n";
    }
	print STDERR "\n";
  }
  $field[10] = ".";
  print join( "", @field ), "\n";
}

Best wishes ... cheers, drl

Last edited by drl; 03-04-2015 at 05:57 PM..
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

replace a column values with the first value in column

Hi All, I have a file which has data in following format: "Body_Model","2/1/2007","2/1/2007" "CSCH74","0","61" "CSCS74","0","647" "CSCX74","0","3" "CSYH74","0","299" "CSYS74","0","2514" "CSYX74","0","3" "Body_Model","3/1/2007","3/1/2007" "CSCH74","0","88" "CSCS74","0","489"... (3 Replies)
Discussion started by: sumeet
3 Replies

2. Shell Programming and Scripting

replace the column values.

I have the below file ...where some of the column values should replaced with desired values ....below file u can find that 3 column where ever 'AAA' comes should replaced with ' CC ' NOTE : we have to pass the column number ,AAA,CC (modified value) as the parameters to the code. ... (6 Replies)
Discussion started by: charandevu
6 Replies

3. UNIX for Dummies Questions & Answers

Replace values in a specified column of a file

Hello, I have a file with four columns and I would like to replace values in the second column only. An arbitrary example is: 100 A 105 B 200 B 205 C 300 C 305 D 400 D 405 E 500 E 505 F I need to replace the second column as shown below: ... (4 Replies)
Discussion started by: Gussifinknottle
4 Replies

4. UNIX for Dummies Questions & Answers

replace a column with values from another file

Dear all, I have a file1.pdb in pdb format and a dat file2 containing values, corresponding to the atoms in the pdb file. these values (file2.dat) need to be in the column instead of the 0.00 (file1) values for each atom in file1.pdb .(the red values must be replaced by the blue ones,in order)... (11 Replies)
Discussion started by: chen.xiao.po
11 Replies

5. Shell Programming and Scripting

Selective Replace awk column values

Hi, I have the following data: 2860377|"DATA1"|"DATA2"|"65343"|"DATA2"|"DATA4"|"11"|"DATA5"|"DATA6"|"65343"|"DATA7"|"0"|"8"|"1"|"NEGATIVE" 32340377|"DATA1"|"DATA2"|"65343"|"DATA2"|"DATA4"|"11"|"DATA5"|"DATA6"|"65343"|"DATA7"|"0"|"8"|"1"|"NEG-DID"... (3 Replies)
Discussion started by: sdohn
3 Replies

6. Shell Programming and Scripting

Rounding decimal values in a column

Hi, I wanted to round all the values in a column to nearest integer. I have multiple files with only two columns and I want to round values in column 2. e.g input_file A1 23.971578 A2 34.624976 A3 46.403446 A4 375 A5 1 A6 3 A7 ... (3 Replies)
Discussion started by: ashu0001
3 Replies

7. Shell Programming and Scripting

Replace column values from other file

I have one file as it has the following format File1 S No Site IP Address 1 Australia 192.168.0.1/26 2 Australia 192.168.0.2/26 3 Australia 192.168.0.3/26 I need awk/sed command to replace the column2 value ( under Site) with some other... (8 Replies)
Discussion started by: samaritan
8 Replies

8. Shell Programming and Scripting

Trying to get an awk script to replace values in column

I'm trying to make an awk script to compare values I've set as var1, var2, and var3 earlier in the script to the values in the userinputted column of four text files called Node1.txt, Node2.txt, Node3.txt, and Node4.txt and then replace the values in that userinputted column with either ttt or gcc,... (8 Replies)
Discussion started by: Eric1
8 Replies

9. Shell Programming and Scripting

Need to grep for decimal values only in the second column.

Hi, I have a file in which I need to print all the lines that have decimal values in the second column. The below prints all the decimal values from the second column but I need the complete line to be printed. cat hello.out | sed 's/ */:/g' | cut -d : -f 2 | ggrep -Eo "+\.+" Can you... (2 Replies)
Discussion started by: mohtashims
2 Replies

10. UNIX for Beginners Questions & Answers

Replace a numeric values in a certain column

Hi All, I am trying to replace a certain value from one place in a file . In the below file at position 35 I will have 8 I need to modify all 8 in that position to 7 I tried awk '{gsub("8","7",$35)}1' infile > outfile ----> not working sed -i 's/8/7'g' infile --- it is replacing all... (3 Replies)
Discussion started by: arunkumar_mca
3 Replies
ascii(5)							File Formats Manual							  ascii(5)

NAME
ascii - map of ASCII character set SYNOPSIS
DESCRIPTION
The file provides a map of the ASCII character set, giving both octal and hexadecimal equivalents of each character. The file contains the following text: |000 nul|001 soh|002 stx|003 etx|004 eot|005 enq|006 ack|007 bel| |010 bs |011 ht |012 nl |013 vt |014 np |015 cr |016 so |017 si | |020 dle|021 dc1|022 dc2|023 dc3|024 dc4|025 nak|026 syn|027 etb| |030 can|031 em |032 sub|033 esc|034 fs |035 gs |036 rs |037 us | |040 sp |041 ! |042 " |043 # |044 $ |045 % |046 & |047 ' | |050 ( |051 ) |052 * |053 + |054 , |055 - |056 . |057 / | |060 0 |061 1 |062 2 |063 3 |064 4 |065 5 |066 6 |067 7 | |070 8 |071 9 |072 : |073 ; |074 < |075 = |076 > |077 ? | |100 @ |101 A |102 B |103 C |104 D |105 E |106 F |107 G | |110 H |111 I |112 J |113 K |114 L |115 M |116 N |117 O | |120 P |121 Q |122 R |123 S |124 T |125 U |126 V |127 W | |130 X |131 Y |132 Z |133 [ |134 |135 ] |136 ^ |137 _ | |140 ` |141 a |142 b |143 c |144 d |145 e |146 f |147 g | |150 h |151 i |152 j |153 k |154 l |155 m |156 n |157 o | |160 p |161 q |162 r |163 s |164 t |165 u |166 v |167 w | |170 x |171 y |172 z |173 { |174 | |175 } |176 ~ |177 del| | 00 nul| 01 soh| 02 stx| 03 etx| 04 eot| 05 enq| 06 ack| 07 bel| | 08 bs | 09 ht | 0a nl | 0b vt | 0c np | 0d cr | 0e so | 0f si | | 10 dle| 11 dc1| 12 dc2| 13 dc3| 14 dc4| 15 nak| 16 syn| 17 etb| | 18 can| 19 em | 1a sub| 1b esc| 1c fs | 1d gs | 1e rs | 1f us | | 20 sp | 21 ! | 22 " | 23 # | 24 $ | 25 % | 26 & | 27 ' | | 28 ( | 29 ) | 2a * | 2b + | 2c , | 2d - | 2e . | 2f / | | 30 0 | 31 1 | 32 2 | 33 3 | 34 4 | 35 5 | 36 6 | 37 7 | | 38 8 | 39 9 | 3a : | 3b ; | 3c < | 3d = | 3e > | 3f ? | | 40 @ | 41 A | 42 B | 43 C | 44 D | 45 E | 46 F | 47 G | | 48 H | 49 I | 4a J | 4b K | 4c L | 4d M | 4e N | 4f O | | 50 P | 51 Q | 52 R | 53 S | 54 T | 55 U | 56 V | 57 W | | 58 X | 59 Y | 5a Z | 5b [ | 5c | 5d ] | 5e ^ | 5f _ | | 60 ` | 61 a | 62 b | 63 c | 64 d | 65 e | 66 f | 67 g | | 68 h | 69 i | 6a j | 6b k | 6c l | 6d m | 6e n | 6f o | | 70 p | 71 q | 72 r | 73 s | 74 t | 75 u | 76 v | 77 w | | 78 x | 79 y | 7a z | 7b { | 7c | | 7d } | 7e ~ | 7f del| Control Characters The following table shows the set of ASCII control characters with their octal, decimal, and hexadecimal values. To obtain the respective characters from the keyboard, use the indicated keypress combinations. To place control characters in a file when using the or editor, type Ctrl-before typing the desired control character. +----+-----+-----+---------+--------+------------------------+--------------+ |Oct | Dec | Hex | Display | Symbol | Char Name | Keypress | +----+-----+-----+---------+--------+------------------------+--------------+ |000 | 000 | 00 | none | NUL | Null | Ctrl-Shift-@ | |001 | 001 | 01 | ^A | SOH | Start of Header | Ctrl-A | |002 | 002 | 02 | ^B | STX | Start of Text | Ctrl-B | |003 | 003 | 03 | ^C | ETX | End of Text | Ctrl-C | |004 | 004 | 04 | ^D | EOT | End of Transmission | Ctrl-D | |005 | 005 | 05 | ^E | ENQ | Enquire | Ctrl-E | |006 | 006 | 06 | ^F | ACK | Acknowledge | Ctrl-F | |007 | 007 | 07 | ^G | BEL | Bell | Ctrl-G | +----+-----+-----+---------+--------+------------------------+--------------+ |010 | 008 | 08 | ^H | BS | Back Space | Ctrl-H | |011 | 009 | 09 | ^I | HT | Horizontal Tab | Ctrl-I | |012 | 010 | 0A | ^J | LF | Line Feed | Ctrl-J | |013 | 011 | 0B | ^K | VT | Vertical Tab | Ctrl-K | |014 | 012 | 0C | ^L | FF | Form Feed | Ctrl-L | |015 | 013 | 0D | ^M | CR | Carriage Return | Ctrl-M | |016 | 014 | 0E | ^N | SO | Shift Out | Ctrl-N | |017 | 015 | 0F | ^O | SI | Shift In | Ctrl-O | +----+-----+-----+---------+--------+------------------------+--------------+ |020 | 016 | 10 | ^P | DLE | Data Link Escape | Ctrl-P | |021 | 017 | 11 | ^Q | DC1 | Device Control 1 | Ctrl-Q | |022 | 018 | 12 | ^R | DC2 | Device Control 2 | Ctrl-R | |023 | 019 | 13 | ^S | DC3 | Device Control 3 | Ctrl-S | |024 | 020 | 14 | ^T | DC4 | Device Control 4 | Ctrl-T | |025 | 021 | 15 | ^U | NAK | Negative Acknowledge | Ctrl-U | |026 | 022 | 16 | ^V | SYN | Synchronize | Ctrl-V | |027 | 023 | 17 | ^W | ETB | End Transmission Block | Ctrl-W | +----+-----+-----+---------+--------+------------------------+--------------+ |030 | 024 | 18 | ^X | CAN | Cancel | Ctrl-X | |031 | 025 | 19 | ^Y | EM | End of Medium | Ctrl-Y | |032 | 026 | 1A | ^Z | SUB | Substitute | Ctrl-Z | |033 | 027 | 1B | ^[ | ESC | Escape | Ctrl-[ | |034 | 028 | 1C | ^ | FS | File Separator | Ctrl- | |035 | 029 | 1D | ^] | GS | Group Separator | Ctrl-] | |036 | 030 | 1E | ^^ | RS | Record Separator | Ctrl-Shift-^ | |037 | 031 | 1F | ^_ | US | Unit Separator | Ctrl-Shift-_ | +----+-----+-----+---------+--------+------------------------+--------------+ |177 | 127 | 7F | ^? | DEL | Delete | DEL | +----+-----+-----+---------+--------+------------------------+--------------+ WARNINGS
Note that some HP-UX subsystems, such as the keyboard interface, window systems, and other system software, may use selected keyboard con- trol characters for special purposes, possibly causing unexpected results. FILES
ascii(5)
All times are GMT -4. The time now is 11:20 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy