Move File Containing More Than two "-" at 3rd Line To New Directory


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Move File Containing More Than two "-" at 3rd Line To New Directory
# 29  
Old 05-16-2015
Sorry. It should be left behind in current folder. Smilie 0H should be those that contain [] but no hyphens Smilie
# 30  
Old 05-16-2015
OK. I'll see what I can do this weekend.

Off to bed for now...
This User Gave Thanks to Don Cragun For This Post:
# 31  
Old 05-16-2015
This is not a complete solution, just a detail for one:

Despite the preference of the majority here for awk i suppose that sed is the fastest to search for something at exactly line 3:

Code:
sed -n '3 {;s/[^[]*\[//;s/\].*//p;q;}' /path/to/file

Will extract only what is between "[" and "]" in the third line of a file, then quit immediately. It should be trivial to adapt the regexp to something counting hyphens in the part to be matched.

You might want to create rules for all the possible numbers of hyphens and decide on each file in one pass, like:

Code:
case number-of-hyphens in
     1)
          move_file dest_01
          ;;

     2)
          move_file dest_02
          ;;

     3)
          move_file dest_02
          ;;

     ..... etc....

esac

because it will be fastest to process each file only once.

I hope this helps.

bakunin

Last edited by bakunin; 05-16-2015 at 01:08 PM..
This User Gave Thanks to bakunin For This Post:
# 32  
Old 05-16-2015
Please help me out:
Quote:
Originally Posted by bakunin
.
.
.
It should be trivial to adapt the regexp to something counting hyphens in the part to be matched.
.
.
.
How would you do that in sed?

If not in sed, this might be a possible way
Code:
for FN in file[12]
   do TMP=$(sed -n '3 {s/[^[]*\[|\].*//; s/,.*//; s/[^-]*//gp;q;}' $FN)
   echo mv $FN dest${#TMP}
   done
mv file1 dest3
mv file2 dest18

This User Gave Thanks to RudiC For This Post:
# 33  
Old 05-16-2015
Hi Don Cragun...
Quote:
And, mv on OS X doesn't have a -t target_directory option.
I am not sure if I am missing something but -t is not needed if the target directory ends with a / ...
Code:
Last login: Sat May 16 15:10:40 on ttys000
AMIGA:barrywalker~> cp AudioScope.sh AS.sh
AMIGA:barrywalker~> mv AS.sh /tmp/
AMIGA:barrywalker~> ls /tmp/AS.sh
/tmp/AS.sh
AMIGA:barrywalker~> ls AS*
ls: AS*: No such file or directory
AMIGA:barrywalker~> _

This User Gave Thanks to wisecracker For This Post:
# 34  
Old 05-16-2015
The -t option is for specifying the target directory BEFORE a list of files, e.g. with, but not limited to, xargs.
This User Gave Thanks to RudiC For This Post:
# 35  
Old 05-16-2015
Quote:
Originally Posted by RudiC
Please help me out:
How would you do that in sed?
By replacing a line with a certain number of hyphens with a word i can easily parse. Like, in the following (simplified, just proof-of-concept) example:

Code:
sed -n 's/^x$/one/p
        s/^x\{2\}$/two/p
        s/^x\{3\}$/three/p
        s/^x\{4\}$/four/p' /some/file |\
while read LINE ; do
     case LINE in
          "one")
               do_something once
               ;;

          "two")
               do_something twice
               ;;

          "three")
               do_something three-times
               ;;

          "four")
               do_something four-times
               ;;
     esac
done

In practice one could replace a certain destination directory for every given numbers of hyphens so that one could directly use that in the following mv-statement instead of the rather cumbersome case-esac.

I hope this helps.

bakunin
This User Gave Thanks to bakunin For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. Shell Programming and Scripting

Failure: if grep "$Var" "$line" inside while read line loop

Hi everybody, I am new at Unix/Bourne shell scripting and with my youngest experiences, I will not become very old with it :o My code: #!/bin/sh set -e set -u export IFS= optl="Optl" LOCSTORCLI="/opt/lsi/storcli/storcli" ($LOCSTORCLI /c0 /vall show | grep RAID | cut -d " "... (5 Replies)
Discussion started by: Subsonic66
5 Replies

4. Shell Programming and Scripting

Move a line containg "char" above line containing "xchar"

Okay, so I have a rather large text file and will have to process many more and this will save me hours of work. I'm not very good at scripting, so bear with me please. Working on Linux RHEL I've been able to filter and edit and clean up using sed, but I have a problem with moving lines. ... (9 Replies)
Discussion started by: rex007can
9 Replies

5. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

6. Shell Programming and Scripting

Find lines with "A" then change "E" to "X" same line

I have a bunch of random character lines like ABCEDFG. I want to find all lines with "A" and then change any "E" to "X" in the same line. ALL lines with "A" will have an "X" somewhere in it. I have tried sed awk and vi editor. I get close, not quite there. I know someone has already solved this... (10 Replies)
Discussion started by: nightwatchrenba
10 Replies

7. UNIX for Dummies Questions & Answers

look for file size greater than "0" of specific pattern and move those to another directory

Hi , i have some files of specific pattern ...i need to look for files which are having size greater than zero and move those files to another directory.. Ex... abc_0702, abc_0709, abc_782 abc_1234 ...etc need to find out which is having the size >0 and move those to target directory..... (7 Replies)
Discussion started by: dssyadav
7 Replies

8. UNIX for Dummies Questions & Answers

script works well but displays " line 6: =: No such file or directory"

strange :) can you tell why?:cool: #!/bin/bash echo " enter your age " read age if ; then echo " you do not have to pay tax " elif ]; then echo " you are eligible for income tax " else echo " you dont have to pay tax " fi (3 Replies)
Discussion started by: me.
3 Replies

9. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

10. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question