Getting Files from list and jumbles them


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Getting Files from list and jumbles them
# 8  
Old 05-25-2016
Maybe a bit of Perl?

Code:
perl -MList::Util=shuffle -nalF',\s?' -e '
($o, $t)=shuffle @F;
push @x, $o; push @y, $t;

END{
    @x=shuffle @x;
    @y=shuffle @y;
    for(0 .. $#x){printf "%-15s %s\n", $x[$_], $y[$_]}
}' example.txt

Code:
answer2         answer5
example6        example2
example9        answer10
example7        answer7
example10       answer3
answer1         answer6
example4        example1
answer8         answer4
example3        answer9
example5        example8


Last edited by Aia; 05-25-2016 at 02:31 PM..
# 9  
Old 05-25-2016
Quote:
Originally Posted by RudiC
This one would make you independent of the input row count; use it on files of arbitrary length...
Code:
awk '
        {EX[NR]  = $1
         EX[-NR] = $2
        }
END     {for (i=1; i<=NR; i++)  {IX = 0
                                 IY = 0
                                 do     IX = int(rand()*2*NR) - NR
                                 while  (!(IX in EX))

                                 SGN = (IX < 0)?1:-1

                                 do     IY = SGN*(int(rand()*NR)+1)
                                 while  (!(IY in EX) || IY == SGN*IX)

                                 printf "%15s      %-15s\n", EX[IX], EX[IY]
                                 delete EX[IX]
                                 delete EX[IY]
                                }
        }
' FS=, file


How do I invoke the above script: Tried the following:

Code:
awk -f  rudic.awk sample_list.txt

# 10  
Old 05-26-2016
You can run it as given exchanging "file" with your file's name. Or, put everything within but excluding the single quotes into the .awk file, and run like
Code:
awk -fxxx.awk FS=, yourfilename

.
# 11  
Old 05-26-2016
Got the script to work ;-)

Code:
awk -f unix.awk sample.txt
        answer6      example3,
      example6,      answer2
      example1,      answer9
        answer7      example5,
        answer3      example10,
        answer5      example9,
      example2,      answer4
        answer8      example7,
       answer10      example8,
        answer1      example4,

But its got both the answer1 and example1 the same side.

What it is supposed to do is 1-10 of both the example and answer on either side.

Thanks for taking time to look at this.
# 12  
Old 05-26-2016
Quote:
Originally Posted by macdadi112
Got the script to work ;-)

Code:
awk -f unix.awk sample.txt
        answer6      example3,
      example6,      answer2
      example1,      answer9
        answer7      example5,
        answer3      example10,
        answer5      example9,
      example2,      answer4
        answer8      example7,
       answer10      example8,
        answer1      example4,

But its got both the answer1 and example1 the same side.

What it is supposed to do is 1-10 of both the example and answer on either side.

Thanks for taking time to look at this.
Note that you should have used:
Code:
awk -f unix.awk FS=, sample.txt

(as RudiC suggested in post #10 in this thread) to get rid of the commas after all of the example#s in your output (and to allow the script to work when an example or answer contains more than one "word").

Please go back and look at your post #1 in this thread where you showed output exactly like that above with examples and answers in both columns of the desired output. Then look at post #2 where I said:
Quote:
I could imagine needing to extract 10 examples and the 10 answers corresponding to those examples and creating 10 lines with the examples on the left and the answers on the right (but with the answers in random order) or creating 10 lines with the answers on the left and the examples on the right (but with the examples in random order), but neither of these match the output you say you want.
and in post #3 you stated:
Quote:
I would like you to know that it ... is a process carried out by the local school teachers on a daily basis. To make life easier for them I suggested that it could be done using sone form of shell script and that is where I thought you guys came in.
which we all understood to be a clear statement that you wanted examples and answers mixed in the columns; not kept in separate columns.

So, now that you have changed your mind; please be very clear about what you want:
  1. Do you want examples in the left column of output and answers in the right column of output?
  2. Do you want answers in the left column of output and examples in the right column of output?
  3. Do you want the script to randomly decide whether to put examples or answers in the left column and answers or examples, respectively, in the right column?
  4. Do you want the script to interactively ask the user which field should be in the left column?
  5. Do you want the script to default to putting examples in the left column and answers in the right column and accept an option to switch the order?
  6. Or do you want the script to require an operand that specifies which data goes in the left column?
Please also tell us:
  1. The output you said you want uses a single tab character to separate output fields. Is that really what you want, or do you want both output columns aligned?
  2. The input shows a <comma> (or <comma><space>) as the input file field separator. What input field separator do you want to use? (Note that whatever field separator you choose to use will not be allowed to appear in any example and will not be allowed to appear in any answer!)
  3. What shell are you using?
  4. What operating system are you using?
# 13  
Old 05-26-2016
Quote:
Originally Posted by macdadi112
Got the script to work ;-)

Code:
awk -f unix.awk sample.txt
        answer6      example3,
      example6,      answer2
      example1,      answer9
        answer7      example5,
        answer3      example10,
        answer5      example9,
      example2,      answer4
        answer8      example7,
       answer10      example8,
        answer1      example4,

But its got both the answer1 and example1 the same side.

What it is supposed to do is 1-10 of both the example and answer on either side.

Thanks for taking time to look at this.
Do you have access to Perl?
That problem is solved in my solution in post number 8
Just copy and paste on your command line, change the example.data for your real filename:

Code:
perl -MList::Util=shuffle -nalF',\s?' -e '
($o, $t)=shuffle @F;
push @x, $o; push @y, $t;

END{
    @x=shuffle @x;
    @y=shuffle @y;
    for(0 .. $#x){printf "%-15s %s\n", $x[$_], $y[$_]}
}' example.data

# 14  
Old 05-26-2016
Thanks everyone for your efforts, but I'm not remotely convinced that "it is not part of homework but is a process carried out by the local school teachers on a daily basis", so the thread is closed.
This User Gave Thanks to Scott For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Comparing two files and list the difference with common first line content of both files

I have two file as given below which shows the ACL permissions of each file. I need to compare the source file with target file and list down the difference as specified below in required output. Can someone help me on this ? Source File ************* # file: /local/test_1 # owner: own #... (4 Replies)
Discussion started by: sarathy_a35
4 Replies

2. Shell Programming and Scripting

List all the files in the present path and Folders and subfolders files also

Hi, I need a script/command to list out all the files in current path and also the files in folder and subfolders. Ex: My files are like below $ ls -lrt total 8 -rw-r--r-- 1 abc users 419 May 25 10:27 abcd.xml drwxr-xr-x 3 abc users 4096 May 25 10:28 TEST $ Under TEST, there are... (2 Replies)
Discussion started by: divya bandipotu
2 Replies

3. Shell Programming and Scripting

Copy list of files from a keyword list to another directory

Hello, I have a folder with a massive amount of files, and I want to copy out a specific subset of the files to a new directory. I would like to use a text file with the filenames listed, but can't get it to work. The thing I'm hung up on is that the folder names in the path can and do have... (5 Replies)
Discussion started by: twjolson
5 Replies

4. UNIX for Dummies Questions & Answers

How to list files with no extension together with *.prog files?

Hi, I know that to list files with no extension, we can use.. ls -1 | grep -v "\." And to list .prog files, we can use.. ls -1 *.prog or ls -1 | grep '.prog$' (4 Replies)
Discussion started by: adshocker
4 Replies

5. Shell Programming and Scripting

Take a list if strings from a file and search them in a list of files and report them

I have a file 1.txt with the below contents. -----cat 1.txt----- 1234 5678 1256 1234 1247 ------------------- I have 3 more files in a folder -----ls -lrt------- A1.txt A2.txt A3.txt ------------------- The contents of those three files are similar format with different data values... (8 Replies)
Discussion started by: realspirituals
8 Replies

6. Shell Programming and Scripting

List files only when a certain number of files match

Hi, I have many files named CCR20110720011001.CTRD CCR20110720011501.CTRD CCR20110720012001.CTRD CCR20110720012501.CTRD CCR20110720021001.CTRD ... (9 Replies)
Discussion started by: shadyfright
9 Replies

7. Shell Programming and Scripting

find list of files from a list and copy to a directory

I will be very grateful if someone can help me with bash shell script that does the following: I have a list of filenames: A01_155716 A05_155780 A07_155812 A09_155844 A11_155876 that are kept in different sub directories within my current directory. I want to find these files and copy... (3 Replies)
Discussion started by: manishabh
3 Replies

8. UNIX for Dummies Questions & Answers

Find files and display only directory list containing those files

I have a directory (and many sub dirs beneath) on AIX system, containing thousands of file. I'm looking to get a list of all directory containing "*.pdf" file. I know basic syntax of find command, but it gives me list of all pdf files, which numbers in thousands. All I need to know is, which... (4 Replies)
Discussion started by: r7p
4 Replies

9. Shell Programming and Scripting

I need a script to find socials in files and output a list of those files

I am trying to find socail security numbers in files in (and under) a specific directory and output a list of the files where they are found... the format would be with no dashes just 9 numeric characters in a row. I have tried this: find /DirToLookIn -exec grep '\{9\}' /dev/null {} \; >>... (1 Reply)
Discussion started by: NewSolarisAdmin
1 Replies

10. UNIX for Dummies Questions & Answers

counting a list of string in a list of txt files

Hi there! I have 150 txt files named chunk1, chunk2, ........., chunk150. I have a second file called string.txt with more than 1000 unique strings, house, dog, cat ... I want to know which command I should use to count how many times each string appears in the 150 files. I have tried... (4 Replies)
Discussion started by: Pep Puigvert
4 Replies
Login or Register to Ask a Question