Visit Our UNIX and Linux User Community

Top Forums Shell Programming and Scripting Problem with awk and if statement Post 302256028 by radoulov on Friday 7th of November 2008 05:14:35 PM
Old 11-07-2008
OK,
could you run the following commands (see example below) with your files and post the entire terminal output?
You should preserve the formatting!

1.
Code:
ls -l

2.
Code:
awk 'NR == FNR { ref[$1] = $2; next }
{ 
  if (substr($2, 1, 3) in ref) { 
    dest = ref[substr($2, 1, 3)] "/"
    system("[ -d " dest " ] || mkdir " dest) 
    print > (dest FILENAME)
    close(dest FILENAME)
    }
  else {
    dest = "others/"
    system("[ -d " dest " ] || mkdir " dest)
    print > (dest FILENAME)
    }
}' FS='[.],' Ref.tmp FS='","' REG_InputFileName

3.
Code:
ls -lR

Something like this:

Code:
% ls -l
total 8
-rw-r--r-- 1 radoulov radoulov 207 2008-11-07 23:09 Ref.tmp
-rw-r--r-- 1 radoulov radoulov 608 2008-11-07 23:08 REG_InputFileName
% 
% 
% awk 'NR == FNR { ref[$1] = $2; next }
{
  if (substr($2, 1, 3) in ref) {
    dest = ref[substr($2, 1, 3)] "/"
    system("[ -d " dest " ] || mkdir " dest)
    print > (dest FILENAME)
    close(dest FILENAME)
    }
  else {
    dest = "others/"
    system("[ -d " dest " ] || mkdir " dest)
    print > (dest FILENAME)
    }
}' FS='[.],' Ref.tmp FS='","' REG_InputFileName
% ls -lR
.:
total 24
drwxr-xr-x 2 radoulov radoulov 4096 2008-11-07 23:09 IRQ
drwxr-xr-x 2 radoulov radoulov 4096 2008-11-07 23:09 JOR
drwxr-xr-x 2 radoulov radoulov 4096 2008-11-07 23:09 others
drwxr-xr-x 2 radoulov radoulov 4096 2008-11-07 23:09 PAK
-rw-r--r-- 1 radoulov radoulov  207 2008-11-07 23:09 Ref.tmp
-rw-r--r-- 1 radoulov radoulov  608 2008-11-07 23:08 REG_InputFileName

./IRQ:
total 4
-rw-r--r-- 1 radoulov radoulov 38 2008-11-07 23:09 REG_InputFileName

./JOR:
total 4
-rw-r--r-- 1 radoulov radoulov 38 2008-11-07 23:09 REG_InputFileName

./others:
total 4
-rw-r--r-- 1 radoulov radoulov 38 2008-11-07 23:09 REG_InputFileName

./PAK:
total 4
-rw-r--r-- 1 radoulov radoulov 38 2008-11-07 23:09 REG_InputFileName
%

 
Test Your Knowledge in Computers #584
Difficulty: Easy
Binary files generally requires less space and are more efficient to process.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

if statement problem

I keep getting an error at line 21, it doesn't like my if statement. Previously I have tried using (( )), but still get errors. The current error is that server_busy is not found. This is the script: #! /bin/ksh server_busy="na" for file in $1 $2 $3 $4 $5 $6 do echo " ${file}\t\c" ... (1 Reply)
Discussion started by: coughlin74
1 Replies

2. UNIX for Dummies Questions & Answers

if statement problem

hi all. i just have a very small problem. i have a menu of 7 choices. i want an if statement so that if the user chooses anything except inside the 1 to 7 range, i can handle the error for it. i tried this: if ] then ....... fi (but it dont work) ...any suggestions? ... (4 Replies)
Discussion started by: djt0506
4 Replies

3. UNIX for Dummies Questions & Answers

if statement problem

See https://www.unix.com/shell-programming-scripting/96846-if-statement-problem.html (0 Replies)
Discussion started by: f_o_555
0 Replies

4. Shell Programming and Scripting

if statement problem

Hi I have a bash script like this if then echo "A" else echo "B" fi $1 is something like 02350 (there is always a trailing '0') and I would like to have an if based on the value of the digits after the 0. Can anybody help? Thanks, Sarah (3 Replies)
Discussion started by: f_o_555
3 Replies

5. Shell Programming and Scripting

problem with if/while statement

I'm trying to have the script check if a file has data or not, and then process it accordingly. If the file is empty, I want it to return "nothing to do", if not, I want it to process the file line by line. This is what I have so far, but it always returns "nothing to do", even if the file is not... (4 Replies)
Discussion started by: ddrew78
4 Replies

6. UNIX for Dummies Questions & Answers

Having problem with if statement

Could someone help me out with this if statement? It's supposed to get a person's website, but it isn't working when I run it. website="" echo "Would you like to enter a website? Enter Yes/No" read choice if then while do echo "Please enter a website:"; read... (4 Replies)
Discussion started by: Sotau
4 Replies

7. Shell Programming and Scripting

if statement problem

Writing my script and I'm banging my head on the desk right now ... My biggest problem is the 3rd IF statement where I check if the username exists. Doing the grep command on it's own in the shell gives me a 1 or 0 value. Running the script, it always returns a false value (runs the ELSE... (4 Replies)
Discussion started by: ADay2Long
4 Replies

8. Shell Programming and Scripting

Awk or If/statement Calculation Problem

#!/bin/sh CURRENTSTATE=2 CSVCSTATE=2 LASTSTATECHANGE=8 CSVCSTATEAGE=5 if (($CURRENTSTATE==$CSVCSTATE))&&(($LASTSTATECHANGE>=$CSVCSTATEAGE)) echo GREAT fi returns: ./aff: line 12: syntax error near unexpected token `fi' ./aff: line 12: `fi' what am i doing wrong here? (6 Replies)
Discussion started by: SkySmart
6 Replies

9. Shell Programming and Scripting

Awk/sed problem to write Db insertion statement

Hi There, I am trying to load data from a csv file into a DB during our DB migration phase. I am successfully able export all data into a .csv file but those have to rewritten in terms insert statement which will allow for further population of same data in different DB My exiting csv record... (6 Replies)
Discussion started by: bhaskar_m
6 Replies

10. Shell Programming and Scripting

Convert Update statement into Insert statement in UNIX using awk, sed....

Hi folks, I have a scenario to convert the update statements into insert statements using shell script (awk, sed...) or in database using regex. I have a bunch of update statements with all columns in a file which I need to convert into insert statements. UPDATE TABLE_A SET COL1=1 WHERE... (0 Replies)
Discussion started by: dev123
0 Replies
STPNCPY(3)						     Linux Programmer's Manual							STPNCPY(3)

NAME
stpncpy - copy a fixed-size string, returning a pointer to its end SYNOPSIS
#include <string.h> char *stpncpy(char *dest, const char *src, size_t n); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): stpncpy(): Since glibc 2.10: _POSIX_C_SOURCE >= 200809L Before glibc 2.10: _GNU_SOURCE DESCRIPTION
The stpncpy() function copies at most n characters from the string pointed to by src, including the terminating null byte (''), to the array pointed to by dest. Exactly n characters are written at dest. If the length strlen(src) is smaller than n, the remaining characters in the array pointed to by dest are filled with null bytes (''), If the length strlen(src) is greater than or equal to n, the string pointed to by dest will not be null-terminated. The strings may not overlap. The programmer must ensure that there is room for at least n characters at dest. RETURN VALUE
stpncpy() returns a pointer to the terminating null byte in dest, or, if dest is not null-terminated, dest+n. ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7). +----------+---------------+---------+ |Interface | Attribute | Value | +----------+---------------+---------+ |stpncpy() | Thread safety | MT-Safe | +----------+---------------+---------+ CONFORMING TO
This function was added to POSIX.1-2008. Before that, it was a GNU extension. It first appeared in version 1.07 of the GNU C library in 1993. SEE ALSO
strncpy(3), wcpncpy(3) COLOPHON
This page is part of release 4.15 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/. GNU
2016-03-15 STPNCPY(3)

Featured Tech Videos

All times are GMT -4. The time now is 06:49 AM.
Unix & Linux Forums Content Copyright 1993-2021. All Rights Reserved.
Privacy Policy