Sponsored Content
Full Discussion: Explain iconv command
Top Forums UNIX for Beginners Questions & Answers Explain iconv command Post 303032462 by Corona688 on Monday 18th of March 2019 06:32:22 PM
Old 03-18-2019
dd can pad newline-terminated records to appropriate lengths with spaces, but they must be newline-terminated. Here is a utility to convert to newline-terminated records:

Code:
// convert to an executable with cc block.c -o block
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
        long int BLOCK=0;
        char *buf=NULL;

        if(argc < 2)
        {
                fprintf(stderr, "usage:  %s blocksize [inputfile]\n", argv[0]);
                exit(1);
        }

        if(argc >= 2) BLOCK=strtol(argv[1], NULL, 10);
        if(argc >= 3) {
                if(freopen(argv[2], "rb", stdin)==NULL)
                {
                        perror("Couldn't open");
                        return(1);
                }
        }

        if(BLOCK<=0)
        {
                fprintf(stderr, "Invalid block size %ld\n", BLOCK);
                return(1);
        }

        buf=malloc(BLOCK+1);
        if(buf == NULL)
        {
                perror("Couldn't allocate");
                return(1);
        }

//      fprintf(stderr, "block size %ld\n", BLOCK);

        buf[BLOCK]='\n';
        while(fread(buf,BLOCK,1,stdin))
                fwrite(buf,BLOCK+1,1,stdout);

        free(buf);
        return(0);
}

Having done that, you can convert it with iconv, pad to the required length with dd, then remove the newlines with tr.

In my example, I delete capital letters from aAabBbcccdDdeeEfffggghhhiIijjjkkklLlmmmnnn without changing length.

Code:
#!/bin/sh

BLOCKSIZE=3

# Add newlines using block utility
./block $BLOCKSIZE |
        # Remove characters, i.e. you'd put iconv here
        tr -d 'A-Z' |
        # Pad shrunken records with spaces
        dd ibs=$BLOCKSIZE cbs=$BLOCKSIZE conv=sync,block 2>/dev/null |
        # Remove newlines
        tr -d '\n'

Code:
$ cat fixed.txt
aAabBbcccdDdeeEfffggghhhiIijjjkkklLlmmmnnn

$ ./dump.sh < fixed.txt
aa bb cccdd ee fffggghhhii jjjkkkll mmmnnn   

$

You end up with one blank record at the end, full of spaces, which I haven't figured out how to avoid yet.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

please explain the command

Hi all , please explain the following command : perl -e 'select(undef,undef,undef,.15)' Thanks and Regards Navatha (2 Replies)
Discussion started by: Navatha
2 Replies

2. UNIX for Dummies Questions & Answers

Can anyone explain what this command is doing?

Specifically what is the purpose of sed? What is f? Why is the 'cp f $phonefile' line needed when the script ‘goes live'? Why might that two commands following sed be commented out at the present time ( i.e., during development)? Thanks in... (2 Replies)
Discussion started by: knp808
2 Replies

3. Shell Programming and Scripting

Please Explain me this command

find . -type f -ctime +3 -exec mv {} /somedirectory/ \; in particular "-ctime v/s -mtime" and "difference between +3 and -3" (5 Replies)
Discussion started by: Rambo
5 Replies

4. Shell Programming and Scripting

Help with iconv command

Hi , I am using iconv command to convert a file in UTF-16 format to UTF-8 format. This command will work for few files but for some showing an error as bad input character. But if i copy the contents of the file for which it is showing "bad input character" to a new file and perform the... (0 Replies)
Discussion started by: Shruthi8818
0 Replies

5. UNIX for Dummies Questions & Answers

Help with iconv command

Hi , I am using iconv command to convert a file in UTF-16 format to UTF-8 format. This command will work for few files but for some showing an error as bad input character. But if i copy the contents of the file for which it is showing "bad input character" to a new file and perform the... (2 Replies)
Discussion started by: Shruthi8818
2 Replies

6. Shell Programming and Scripting

Characterset conversion problem using iconv command

Hi Friends, I am not able to conver character set from UTF-8 to IBM-284 throwing an error "cannot open convertor" . Could you please help me how to get out of this error. Below command is working fine iconv -f ISO8859-15 -t UTF-8 fromfile.txt > tofile.txt But the below command is... (2 Replies)
Discussion started by: sivakumarl
2 Replies

7. Shell Programming and Scripting

Help with command iconv

I need to convert a utf16 file to utf8. When i use the iconv command to do so it gives an error saying invalid function. When I ran the iconv -l function it did not list the utf16 and utf8 as part of its internal table. Is there anyway I can add these encodings in the library? Is there any other... (3 Replies)
Discussion started by: gaun
3 Replies

8. UNIX for Dummies Questions & Answers

Please explain this command?

Hi, I saw this. But I don't know why we need this? ls mydir > foo.txt ## I know what this will do, it will take the results and write to the file called foo.txt ls mydir > foo.txt 2>&1 ## Don't know why we need 2>&1 Thanks. (2 Replies)
Discussion started by: samnyc
2 Replies

9. Shell Programming and Scripting

Can any one explain this sqlplus command?

Hi , i am new to unix i need a small clarification regarding this sqlplus -s $USER_NAME/$PASSWD@$ORA_SID<< EOF >> SQL_CONN_LOG.log In the above command what is the meaning of <<EOF>> Thanks, krishna. (2 Replies)
Discussion started by: rams_krishna
2 Replies

10. Red Hat

Please help to explain the command

su - keibatch -c ""date ; /usr/local/kei/batch/apb/bin/JKEIKYK4140.sh -run "&$C$6&" WSUKE100201"" Not clear about : date ; /usr/local/kei/batch/apb/bin/JKEIKYK4140.sh -run "&$C$6&" WSUKE100201 Please help (2 Replies)
Discussion started by: honda_city
2 Replies
START_PVMD(3PVM)						  PVM Version 3.4						  START_PVMD(3PVM)

NAME
pvm_start_pvmd - Starts new PVM daemon. SYNOPSIS
C int info = pvm_start_pvmd( int argc, char **argv, int block ) Fortran call pvmfstartpvmd( args, block, info ) PARAMETERS
argc Number of arguments in argv. argv An array of arguments to the executable. args A character string containing the arguments to the executable. args A character string containing the arguments to the executable. block Integer specifying whether to block until startup of all hosts complete or return immediately. info Integer returning the error code. DESCRIPTION
The routine pvm_start_pvmd starts up a pvmd3 process, the master of a new virtual machine. It returns as soon as the pvmd is started and ready for work. If the block parameter is nonzero and a hostfile is passed to the pvmd as a parameter, it returns when all hosts marked to start have been added. pvm_start_pvmd returns zero on success. If PVM is compiled to allow running more than one pvmd per host, a task calling pvm_start_pvmd before any other pvm functions will connect to the pvmd that it starts. pvm_start_pvmd sets environment variable PVMSOCK to the address printed by the pvmd as it starts up. EXAMPLES
C: static char *argv[] = { "-d41", "/u/jones/pvmd_hosts", }; argc = 2 info = pvm_start_pvmd( argc, argv, block ); Fortran: CALL PVMFSTART_PVMD( '-d41 /u/jones/pvmd_hosts', BLOCK, INFO ) EXAMPLES
C: static char *argv[] = { "-d41", "/u/jones/pvmd_hosts", }; argc = 2 info = pvm_start_pvmd( argc, argv, block ); Fortran: CALL PVMFSTART_PVMD( '-d41 /u/jones/pvmd_hosts', BLOCK, INFO ) ERRORS
The following error conditions can be returned PvmDupHost A pvmd is already running. PvmSysErr The local pvmd is not responding. SEE ALSO
pvm_addhosts(3PVM), pvmd3(1PVM) pvmd3(1PVM) 11 December, 1995 START_PVMD(3PVM)
All times are GMT -4. The time now is 06:30 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy