Re: OT: bashfråga

Anders Jackson <[email protected]>
Newsgroups gmane.linux.debian.user.swedish
Message-ID <CACXJ-BgFUXiOGXdEVsUM2u31FsAjnmH4=r-37MA-KocxcoKYPw@mail.gmail.com>
Hej.

Den 30 mar 2015 16:00 skrev <[email protected]>:
>
> 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:
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.