80 bytes per line ???


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting 80 bytes per line ???
# 8  
Old 07-24-2006
Now I'm confused. How can you have multiple 80-byte length lines in a file if multiple lines are not allowed?
# 9  
Old 07-24-2006
Crlf

actully that is another application requires my ascii file with
1.80byte pers line
2.with NO CRLF (as IEEE says :CRLF refers to a carriage-return character ('\r', octal 15, ASCII CR) followed by a line-feed character ('\n')

and I guess fold will create a line-feed charchater

any input
# 10  
Old 07-24-2006
Ok, so like blowtorch said, how could you differentiate between lines if no linefeeds are allowed?
# 11  
Old 07-24-2006
Quote:
Originally Posted by u263066
actully that is another application requires my ascii file with
1.80byte pers line
2.with NO CRLF (as IEEE says :CRLF refers to a carriage-return character ('\r', octal 15, ASCII CR) followed by a line-feed character ('\n')

and I guess fold will create a line-feed charchater

any input
I think you are simply missing the point about having multiple 80 character lines and somehow making these individual lines without some kind of line break. Let's try this.
  1. Process your file with 80 character lines using fold
  2. Pad each line once folded
  3. Use tr or sed to strip the line breaks out of the file
Example creating 20 character records:
Code:
{
typeset IFS=$(echo '\012\001') 
print "This is a line test
This is another line test" | fold -w 20 | while read LINE
do
    typeset -L20 NEW_LINE="$LINE"
    print "$NEW_LINE"
done | tr -d '\012' | od -x
}

Output using od:
Code:
0000000 5468 6973 2069 7320 6120 6c69 6e65 2074
0000020 6573 7420 5468 6973 2069 7320 616e 6f74
0000040 6865 7220 6c69 6e65 7465 7374 2020 2020
0000060 2020 2020 2020 2020 2020 2020
0000074

Code:
Record 1: 5468 6973 2069 7320 6120 6c69 6e65 2074 6573 7420
Record 2: 5468 6973 2069 7320 616e 6f74 6865 7220 6c69 6e65
Record 3: 7465 7374 2020 2020 2020 2020 2020 2020 2020 2020

# 12  
Old 07-24-2006
Thanks, tmarikle. And don't trip over the terminology. Unix has a definition that a line is a sequence of ascii characters followed by a newline character. By that definition, what is requested is impossible. But the unix definition is not the only possible definition of "line". I would have used "record" but when someone else uses "line" I just go with the flow. In C it is very easy to read 80 bytes at a time:
iret = read(fd, buffer, 80);
is all it takes. The 80 bytes you get from the first read represent the first record or first line. Then you issue the system call a second time to get another 80 bytes. It is not really hard to keep the first 80 bytes from getting mixed up with the second 80 bytes.
# 13  
Old 07-24-2006
OK, tmarikle has provided a solution, but I have a few questions.
The output through 'od' looks fine. But the OP wants to write to a file. If you write this output to a file, you get a single line with no newline char at the end (this will happen no matter how big the file is). If you run the 'wc -l' command on that file, you are going to get the output as 0 (because the wc command will look for the \n char to count the number of lines).

Then as Perderabo has said, the read(2) or fread(3), fgets(3) calls will allow you to read the file in a C program. But how do you do this in a shell script?

I expanded the input to tmarikle's script by adding a couple more lines.
Code:
# cat test.sh
#!/usr/bin/ksh
typeset IFS=$(echo '\012\001') 
print "This is a line test
This is another line test
And this is yet another
And another!!! What's going on?" | fold -w 20 | while read LINE
do
    typeset -L20 NEW_LINE="$LINE"
    print "$NEW_LINE"
done | tr -d '\012'
# ./test.sh > test.sh.output
# ls -l test.sh.output
-rw-r--r--   1 root     other        140 Jul 25 10:21 test.sh.output
# wc -l test.sh.output
       0 test.sh.output
ssunsp3:/aditya/sh# while read line; do
> echo $line
> done < test.sh.output
#

The file created by the above process, and the file created by this:
Code:
#!/usr/bin/ksh
typeset IFS=$(echo '\012\001') 
print "This is a line test
This is another line test
And this is yet another
And another!!! What's going on?" |  tr -d '\012'

are almost the same. There is no padding for the second file.

So the OP could simply create a file by stripping all newline characters from the file. The application/program that reads the file is going to have to do this 80 bytes at a time, that's all.
# 14  
Old 07-25-2006
In ksh, "print -n" will suppress the newline. Combine that with the \ sequence for using octal values and ksh can write any binary data using only built-in commands. But to read binary data, the way I know is to parse the output from od.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Best way to axe N bytes from the right?

say that i have strings that end in "text" foo.9.text, bar.10.text, baz.11.text and i want a C function to chop off the last four characters and replace each string with a '\0'; obviously with error-checking. Any ideas? TIA! (7 Replies)
Discussion started by: Gary Kline
7 Replies

2. Shell Programming and Scripting

Get file's first x bytes

is there a better way to do this: head -c 10000k /var/dump.log | head -c 6000k unfortunately, the "-c" option is not available on sun solaris. so i'm looking at "dd". but i dont know how to use it to achieve the same exact goal as the above head command. this needs to work on both solaris... (5 Replies)
Discussion started by: SkySmart
5 Replies

3. Shell Programming and Scripting

Shell script - entered input(1-40 bytes) needs to be converted exactly 40 bytes

hello, suppose, entered input is of 1-40 bytes, i need it to be converted to 40 bytes exactly. example: if i have entered my name anywhere between 1-40 i want it to be stored with 40 bytes exactly. enter your name: donald duck (this is of 11 bytes) expected is as below - display 11... (3 Replies)
Discussion started by: shravan.300
3 Replies

4. UNIX for Dummies Questions & Answers

X bytes of 0, Y bytes of random data, Z bytes of 5, T bytes of 1. ??

Hello guys. I really hope someone will help me with this one.. So, I have to write this script who: - creates a file home/student/vmdisk of 10 mb - formats that file to ext3 - mounts that partition to /mnt/partition - creates a file /mnt/partition/data. In this file, there will... (1 Reply)
Discussion started by: razolo13
1 Replies

5. Shell Programming and Scripting

awk: Input line Cannot be longer than 3,000 bytes.

Guys, I want to get the high CPU utilization from top. I am using below code : top -d2 >> /home/dba_monitoring/host_top_output.txt echo "Script started `date`" > $runlog usage=`grep "^ *$1" /home/dba_monitoring/host_top_output.txt | awk '{print $12}' | sed 's/%//'` And getting below... (7 Replies)
Discussion started by: wahab
7 Replies

6. Programming

Copying 1024 bytes data in 3-bytes chunk

Hi, If I want to copy a 1024 byte data stream in to the target location in 3-bytes chunk, I guess I can use the following script. dd bs=1024 count=3 if=/src of=/dest But, I would like to know, how to do it via a C program. I have tried this with memcpy(), that did not help. (3 Replies)
Discussion started by: royalibrahim
3 Replies

7. Shell Programming and Scripting

Error PHP Fatal error: Allowed memory size of 67108864 bytes exhausted(tried to allocate 401 bytes)

While running script I am getting an error like Few lines in data are not being processed. After googling it I came to know that adding such line would give some memory to it ini_set("memory_limit","64M"); my input file size is 1 GB. Is that memory limit is based on RAM we have on... (1 Reply)
Discussion started by: elamurugu
1 Replies

8. Shell Programming and Scripting

Capture first N Bytes from first line in a file

Hi Guyz, I need to capture first N Bytes from the first line of my file. Eg. If i have following data in File1 414d51204541495052475731202020204a910846230e420c Hello 3621363663212 Help Required Then, i want the value of first 48 Bytes to be stored in a variable. That is, variable... (5 Replies)
Discussion started by: DTechBuddy
5 Replies

9. UNIX for Dummies Questions & Answers

Files with zero bytes

Hi All, I want to find zero byte files in the given folder for the given day. I know we can use find . -size 0 -mtime 0 But is there an option for file creation.? ls -lart | grep ' 0 Apr 24' will also work. Also is there any alternative using awk ? I want to know how to use awk in... (1 Reply)
Discussion started by: preethgideon
1 Replies

10. Shell Programming and Scripting

Remove first N bytes and last N bytes from a binary file on AIX.

Hi all, Does anybody know or guide me on how to remove the first N bytes and the last N bytes from a binary file? Is there any AWK or SED or any command that I can use to achieve this? Your help is greatly appreciated!! Best Regards, Naveen. (1 Reply)
Discussion started by: naveendronavall
1 Replies
Login or Register to Ask a Question