![]() |
|
|
google unix.com
|
|||||||
| Fórumok | Regisztráció | Fórum Szabályok | Linkek | Albumok | GYIK | Tagok listája | Naptár | Keres | Mai hozzászólások | Megjelöl Fórumok Olvas |
| Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt. |
Több, UNIX és Linux fórum témák Ön által talált Hasznos
|
||||
| Szál | Thread Starter | Fórum | Válaszok | Utolsó hozzászólás |
| gzcat az awk majd módosítsa FILENAME és folyamat új FILENAME | timj123 | Shell programozás és Scripting | 6 | 06-23-2008 08:45 AM |
| része a fájlnév | flame_eagle | Shell programozás és Scripting | 8 | 02-28-2008 11:18 AM |
| Jelentés a kettős kép alapján része a fájlnév | sudheshnaiyer | A UNIX a dummies Kérdések és válaszok | 1 | 12-18-2007 04:31 PM |
| Olvastam egy része filename a listáról a forgatókönyvben | happyv | Shell programozás és Scripting | 3 | 10-20-2006 10:58 AM |
| Wanted megszüntetésére numerikus részt a fájlnév | Sona | A UNIX a dummies Kérdések és válaszok | 8 | 07-20-2006 03:49 PM |
![]() |
|
|
LinkBack | Téma eszközök | Keresés a téma | Rate Thread | Megjelenítési módok |
|
|
|
||||
|
kimutatására a részét a fájlnév
Szeretném, hogy a dátumot a formátum 2008/09/01 elején én fájlneveket. Aztán elválasztás után, és akkor már én fájlnév.
Van egy szkript, amely létrehozza ezt nekem. Én azonban lehet dolgozni a fájlokat, amelyek már a dátum formátumát már ott és így nem akarom, hogy a dátumot kétszer. Van út-hoz kinyomoz számot, vagy valami elején a fájlnév, és ha igen, majd vágja ki a dátumot? |
|
||||
|
Ez volt helyett ezt, dátumok rendetlen Kód:
echo $filename | \
sed 's/\(^[1-2][0-9]\{3\}\)-\([0-1][0-9]\)-\([0-3][0-9]\)-\([A-Z_0-9a-z]*\)/\4/' | read newfilename
if [[ ! -z newfilename ]] ; then
filename=$newfilename
fi
Alapvetően azt sugallja, hogy minden file elnevezésére egy vezető időpontot birtokol probléma. próba az ls-l helyett. Chris technikailag megfelelő-nem kétséges -, de a hasznosságát a fenti korlátozott. Ez részben annak köszönhető, hogy az utat megépíteni dátumok -, és a fenti regex nem tökéletes. Szerintem ez egy dátum 2008-19-19 - ami nem az. A legtöbb helyes dátumot regexes több száz karakter hosszú. Az egyetlen "gold standard", hogy olvassa el a kimeneti cal. Az általunk használt részét ez az időpont ellenőrzés alatt algoritmus (egyszerűsített nagyban) való igazolására régi dátumokkal. Ez majdnem teljes & & pontos, mint a legtöbb egyenes shell implementáció segítségével regex valószínűleg. Szándékosan nem Kód:
/* chpdt.c
usage chpdt filename
echo "$filname" | chpdt
*/
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <stdio.h>
#define isleapyr(y) (((y) % 4) == 0 && ((y) % 100) != 0 || ((y) % 400) == 0)
int leap[12]= {31,29,31,30,31,30,31,31,30,31,30,31};
int nleap[12]={31,28,31,30,31,30,31,31,30,31,30,31};
char *date_ok(char *result, char *src)
{
int value=atoi(src);
int month=0;
char *p=src;
int *v=nleap;
if( value >= 1900 && value < 2038 && (p=strchr(p, '-')) != NULL )
{
if(isleapyr(value))
v=leap;
value=atoi(++p);
if(value >= 1 && value < 13 && (p=strchr(p, '-')) != NULL)
{
month=value;
value=atoi(++p);
if( value > 0 && value < v[ month - 1 ] )
if( (p=strchr(p, '-')) != NULL)
result=++p;
}
}
return result;
}
char *name_ok(char *p, char *src)
{
if(src[4]=='-' && src[7]=='-' && src[10]=='-')
p=date_ok(p, src);
return p;
}
int main(int argc, char **argv)
{
int retval=0;
char tmp[PATH_MAX + 2]={0x0};
char *p=NULL;
if (argc < 2)
{
if(fgets(tmp, sizeof(tmp), stdin) ==NULL)
{
perror("I/O error");
retval=1;
};
p=strchr(tmp, '\n');
if(p!=NULL)
*p=0x0;
}
else
(void)strncpy(tmp, argv[1], PATH_MAX);
p=tmp;
if(strlen(tmp) > 10 && !retval) /* will return zero length if string is "date-"*/
p=name_ok(p, tmp);
if( fprintf(stdout, "%s", p) < 0)
{
perror("I/O error");
retval=1;
}
return retval;
}
Sok szerencsét ezt. |
|
||||
|
Köszönet fickók. Mentem Chris megoldása. Ez a korlátozott, mint maga mondta Jim (van szüksége pontos szintaxist, hogy működjön), de Jim a megoldás módja a fejem fölött egy kezdő! Mert mit csinálok Chris megteszi csak finom. Thanks to all of you.
|
![]() |
| Könyvjelzõk |
| Téma eszközök | Keresés a téma |
| Megjelenítési módok | Rate this thread |
|
|