Reseting row count every given number of rows


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
Reseting row count every given number of rows

I have a file with 48 rows. I am counting 6 rows and adding 6 to that number and repeating the operation, and then output the value in column 1. For the second column, I would like to get sort of a binary output (1s and 2s) every 3rd row. This is what I have:
Code:
 awk '{print ++src + (int((++count-1)/6)*6), (int(CNT++/3)+1)%2+1}' test.txt

And I am getting this:
Code:
1 2
 2 2
 3 2
 4 1
 5 1
 6 1
 13 2
 14 2
 15 2
 16 1
 17 1
 18 1
 25 2
 26 2
 27 2
 28 1
 29 1
 30 1
 37 2
 38 2
 39 2
 40 1
 41 1
 42 1
 49 2
 50 2
 51 2
 52 1
 53 1
 54 1
 61 2
 62 2
 63 2
 64 1
 65 1
 66 1
 73 2
 74 2
 75 2
 76 1
 77 1
 78 1
 85 2
 86 2
 87 2
 88 1
 89 1
 90 1

But the desired output is this:
Code:
1 1
 2 1
 3 1
 4 2
 5 2
 6 2
 13 1
 14 1
 15 1
 16 2
 17 2
 18 2
 25 1
 26 1
 27 1
 28 2
 29 2
 30 2
 37 1
 38 1
 39 1
 40 2
 41 2
 42 2
 49 1
 50 1
 51 1
 52 2
 53 2
 54 2
 61 1
 62 1
 63 1
 64 2
 65 2
 66 2
 73 1
 74 1
 75 1
 76 2
 77 2
 78 2
 85 1
 86 1
 87 1
 88 2
 89 2
 90 2

I am sort of getting the desired output but I can only thing there are better ways to accomplish this task.
Any help will be appreciated.
# 2  
Try this instead:
Code:
awk '{print NR + 6 * int((NR - 1) / 6), int(((NR - 1) % 6) / 3) + 1}' test.txt

If you're running this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk or nawk. (Please get into the habit of telling us what operating system and shell you're using every time you start a new thread!)

The above code does not put the leading <space> on the last 47 rows of your output, but it otherwise matches the output you said you want. If you really want the leading <space> in the output, except on the first output line, I will leave adding that <space> to the output as an exercise for the reader.
This User Gave Thanks to Don Cragun For This Post:
Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
I want count of number of records to be printed on each row.
ElijaRajesh
we want the count of number of records to be printed on each row. For Ex: if there are 5 records on one unique id , the count "5'' should be printed on each record in other column. Please help for this. I am using unix & Cygwin. Below are sample records: KCZ0650473...... UNIX for Dummies Questions & Answers
2
UNIX for Dummies Questions & Answers
Count the number or row with same value in a column
sQew
This is the source file, we called it errorlist.out 196 server_a server_unix_2 CD 196 server_b server_win_1 CD 196 server_c server_win_2 CD 196 server_bd server_unix_2 CD 196 server_d server_unix_2 CD 196 server_es server_win_1 CD 196 ...... Shell Programming and Scripting
14
Shell Programming and Scripting
how to add the number of row and count number of rows
juelillo
Hi experts a have a very large file and I need to add two columns: the first one numbering the incidence of records and the another with the total count The input file: 21 2341 A 21 2341 A 21 2341 A 21 2341 C 21 2341 C 21 2341 C 21 2341 C 21 4567 A 21 4567 A 21 4567 C ...... Shell Programming and Scripting
6
Shell Programming and Scripting
count number of nonempty columns in row
grossgermany
Hi, Suppose i have a inputfile in csv format. How to use awk to count 'the number of nonempty columns in each row' minus one, and add the value as a new column in the end For cosmetic reason, it's even better to include a descriptive label for the last column in the first row. for...... Shell Programming and Scripting
2
Shell Programming and Scripting
row count but only number part
er_zeeshan05
hi i am pretty new to unix .i am ETL guy I need a unix script to take row count of a file and write it to another file the problem with wc-l is it include filename also wc -l abc.dat will give me like 1000 abc.dat i just want 1000 to be written can u just take 2 min to write a simple...... UNIX for Dummies Questions & Answers
1
UNIX for Dummies Questions & Answers
UNIX and Linux

Unix (trademarked as the UNIX certification mark) is a very mature family of multitasking, multiuser computer operating systems that evolved from the original AT&T Unix. Unix development starting in the 1970s by legendary Bell Labs programmers Ken Thompson, Dennis Ritchie, and others. Unix was first targeted for the Bell System and AT&T licensed Unix to outside parties. In the 1970s time period, this lead to a variety of for-profit as well as not-for-profit Unix variants.
In the early days, this included the University of California, Berkeley (BSD), Microsoft (Xenix), IBM (AIX), and Sun Microsystems (Solaris). In the early 1990s, AT&T sold their Unix rights to Novell. In 1995 Novell sold their Unix business to the Santa Cruz Operation (SCO). The UNIX trademark was passed to The Open Group, a "neutral" industry consortium. The Open Group promoted the use of the UNIX trademark for certified operating systems that comply with the Single UNIX Specification (SUS). In 2014 Apple's macOS became the Unix version with the largest global install base and macOS remains the largest Unix-user base today.
Linux is a family of open source Unix-like operating systems based on the Linux kernel. The Linux kernel is an operating system kernel first released by Linus Torvalds on 17 September 1991. Linux distributions include the Linux kernel, system software and libraries. Popular free open source Linux distributions include Debian, Fedora, and Ubuntu. Commercial Linux distributions include Red Hat Enterprise Linux and SUSE Linux Enterprise Server. Linux may be freely modified and redistributed. Anyone on the planet may create a Linux distribution for any purpose.
Please enjoy and help our forum community by "showing your work" and posting your code, even when your code is not working as expected. To help others help you, please wrap your code blocks, sample input, sample output, error messages, and other data in CODE tags and wrap your short commands and short data objects in ICODE tags. We were all beginners in the beginning. If you have any questions about how to register or how to post, please contact us in Live Chat. Thank you and enjoy this "forever free" technical support community for UNIX, Linux and computer information technology in general.