Wednesday 11 December 2013

Sed utility

Sed quick learn for general editing and use.
This is just a quick reference form myself and others who don't use it regularly.

Sed is one more editing utility inspired from ed command. Script ed is what it basically is.
ed edits a line at a time while sed edits all line in general it is a global.
sed [-e] 'instruction' file
 were -e is option is important when you are suppling multiple instruction.
 
example let a file contain a list of address and cities name in short form
then following:
sed 's/MA/Massachusetts/' list
where list is file containing address list.
In this as you can see that the instruction is   are similar to that you give in ed.
 but you see that you don't have to provide address(not the addresses in list it mean position or line number in the file) to lines as in ed. It simply traverses to all lines one by one. also it will print out the output.

two ways to specify multiple instruction
1st: Using a ';'

like
 sed 's/MA/Massachusatts/ ; s/PA/Pennsylvania/ ' list

2nd: Using -e

sed -e 's/MA/Massachusatts/' -e 's/PA/Pennsylvania/ ' list

or 
3rd: using multiline entery capability

sed '
s/MA/Massachusetts/
s/PA/Pennsylvania/' list

Ok thats it to entering commands

Now how to use script file as an input to sed?
script file can be like this
suppose  sedscr is a script file then
cat sedscr
s/MA/Massachusetts/
s/PA/Pennsylvania/

 and you can use it as

sed -f sedscr list

as sed directly print it to default output or terminal one can rather redirect it and store the modified out put in a file.
as
 sed -f sedscr list > newlist

you can suppress the printing on screen of all the line by using '-n' option
as
sed -n -e 's/MA/Massachusetts/' list
this will not give or display any out put
if you want to view just the modified lines use 'p' as in ed command
as
sed -n -e 's/MA/Massachusetts/p' list

Thats it for sed
look for further learning on :http://www.grymoire.com/Unix/Sed.html

Ed, the command line editor quick lookup

Ed Command line editor.

Ed is a unix command line editing utility which is interesting as it leads to Grep awk and sed commands to be understood better.
Ed is easier to understand and use.This not a tutorial it for quick lookup for me and those who have not used if from long time and need a little revision. :D enjoy.

consider you are want to edit a file with thousands of words.
 open up the terminal

at prompt type

>ed filename.txt 

nothing will be shown except number of characters in the file.
This command works on just a line at a time.
if you type 'p' and press enter

You will see last line to be printed. Because the ed was pointing at last line. 'p' stands for print.

Entering any number will point to that line number.

 Entering 'd' will delete the line ed is pointing.

rather than moving to a line by line number and then editing .you can specify a regular expression as an address to any particular line containing that regular expression.

suppose u want to delete a line having a word 'regular'  in that line.
then

/regular/d
will delete the line having regular. but this will only delete the line it will encounter the first time containing regular expression

suppose if content of file are,

asdfg
wer
asdfg
rew
asdfg
ewret

and we have processing with ed
the following commands

>3
asdfg
 >/asdfg/d
w
 will save the file as

asdfg
wer
asdfg
rew
ewret

deletion will occur to at next asdfg

g/regular/d
will delete all the lines containing 'regular' word

thats about deletion.

substituting text requires 's'

[address]s/pattern/replacement/flag

where a word pattern will be replaced with replacement. flag can be 'g' for global that is if a g is placed then all the patterns in line will be replaced by replacement.
s/regular/complex/g
above command changes all occurrences on the current line.

address should be specified for this command to act upon more than specific line
/regular/s/regular/complex/g

the above line affects the first line that matches the regular(or address specified).
g/regular/s/regular/complex/g


The family of Unix command Grep is derived from global command Ed as: G/re/p.

 One can write script of edit place them in a separate file and directing them as input to the line editor. For instance, if a series of commands were put in a file named ed-script, following command executes the script:
ed test< ed-script

further you can look at:http://unixhelp.ed.ac.uk/CGI/man-cgi?ed

CC2540 UART 0 alt1 setup

CC2540 UART 0 alt1 setup Instead of USB for CC2540 USB Dongle
this is setup for testing if the Uart works or not I have not connected arduino i have taken out chip and just used the board to make a UART bridge to test it with Btools.

I am working about 2 Months on a project that is under a professor. Project is a from NIF(National Innovation Foundation).
It is about same as a recently famous Tile Device (lost found or object locator) I call it object locator.
TI is based on similar technology developed based on Bluetooth that is BLE (Bluetooth Low Energy) or BLE 4.0
TI(texas Instruments ) have developed an SoC based on BLE . I am using CC2540 for similar application to Tile.
First the thing I wanted was to setup Dongle to UART so  Icould connect it to UART of Arduino as to make a independent Device from computer. In the Btool I saw the Communication (Rx/Tx Dump) so I had to first do bridging to a FTDI and setup dongle to uart connected to bridge and then test it to BTOOL.
 I wanted to use the same project HosttestRelease but wanted to use dongle as a network processor to Arduino to easily prototype the device to show it to the NIF.

So I had a PC setup for the Embedded Workbench after I used the software in my laptop(to TI people can the ble stack be used with other open source IDE's??) . In the project HostTestRelease,
In HAL>Target>CC2540USB>Config>hal_board_config.h
Line No 336 will be a #defined HAL_UART_ISR 0
set it to 1
just in next line #defined HAL_UART_USB 1
set it to 0

Now I wanted to not have a UART flow control or CTS and RTS cause I wanted to use it with arduino I don't want to waste pins of arduino's

for switching CTS and RTS pin off
go to NPI>npi.h file in that at line 77
there is a #defined NPI_UART_FC TRUE
setting all this will get your UART 0 to work on Dongle's I/O port's First and second pins P0_2(Rx) & P0_3(Tx)

There is one more setting to set the priority to UART 0 but I am not remembering where , I was something that I had to set to 0x00 to use UART 0 and that thing was not defined in the file it was in ISR's Method and was shown as error while compiling if in case u get it please post it in comments and I hope this post will help others cause I was also having trouble for 2 days because of no proper guidance like that in AVR atmel case ... Thank you all.