[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: OT: bashfråga



Hej.

Den 30 mar 2015 16:00 skrev <jan@lillahusetiskogen.se>:
>
> Jag behöver en fil som innehåller en datumsträng utan LF i slutet.
> Skulle naturligtvis kunna skriva ett C-program som ger mig exakt det
> men jag skulle vilja göra det i ett bash-script.

Vilket är program, så det fungerar.

> Nedanstående fungerar men det känns väldigt yxigt, speciellt
> sed-kommandot. Någon som har ett bättre förslag?
>
> date +"%Y%m%d_%H%M%S" > tmp
> sed s/\
> // tmp > NEWDATE 2> /dev/null

Varför pipar du inte utmatningen från date(1) direkt in i sed(1)?

$ date +%Y%m%d_%H%M%S | sed -e s/\n// -

Annars så läser man på manualsidan för date och ser att ISO8601 stöds direkt (exempelvis med växeln --Isecond till date) eller för datum kan %x eller %F var bra val och tid %X eller %T kan vara lämpliga val, om formatet inte är hugget i sten.  Notera skillnaden mellan x och F och X T i manualsidan.  Samt att växeln -n till echo(1) inte skriver ut något nyradstecken.

$ date +%x_%X
2015-03-30_17:28:47
$ date +%F_%T
2015-03-30_17:28:49

$ mydate=$(date +%F_%T | sed -e "s/-//g" -e "s/://g" -)
$ echo -n $mydate | hexdump -C
00000000  32 30 31 35 30 33 33 30  5f 31 37 32 37 31 31     |20150330_172711|
0000000f

eller för ANSI-standard och inte bashism, dvs `` istf $()

$ echo -n `date +%F_%T | sed -e "s/-//g" -e "s/://g" -` | hexdump -C
00000000  32 30 31 35 30 33 33 30  5f 31 37 33 32 32 37     |20150330_173227|
0000000f

eller använd tr(1) för att ta bort tecken

$ date +%F_%T | tr -d "[:space:]:-" | hexdump -C
00000000  32 30 31 35 30 33 33 30  5f 31 37 32 34 34 37     |20150330_172447|
0000000f

eller använd printf(1) eller perl(1) eller python(1) för att ta bort \n.  Men enklast är nog echo(1) med växeln -n samt att exekvera date(1) i ett "Command Substitution", se manualsidan för bash(1).

man 1 bash  # skriv sedan /\$\( följt av enter och / följt av enter tills du hittar $(command), då backar du ett steg med b. 

> Med hopp om svar.
> /Janne

/Jackson

PS:
Tack Michael för hexdump(1)
DS:


Reply to: