我根据人页面将其拼凑在一起,但是只需浏览它:
$date +'%m.%d.%Y' "%r" %z
05.03.2015 12:54:11 PM -0700
这给出了:
05.03.2015 12:54:11 PM -0700
我可以接近我想要的东西:
05.03.2015 - 12:54:11 PM -0700
我似乎无法在中间获得en dash。如果我逃脱,我可以使用上面的空间;看来%
是通过以另一个百分比逃脱的百分比来完成的,例如: %%
Newline有一个%n
,还有其他几个修饰符。如何通过en dash界定两个划界?
,我很想在日期格式的情况下完成所有操作,就像我在其他语言中所能做的一样。我真的不想用sed或尴尬或用" - "代替第一个空间。
最好(单单)引用整个格式字符串为一个,而不是像您一样混合单报价,双引号和后斜线逃脱。我当然认为这是写它的最清晰方法:
date +'%m.%d.%Y - %r %z'
我很困惑你有任何问题。在Mac上测试(10.10.3),我只是在格式字符串中包括了end-dash,键入:
$ date +'%m.%d.%Y – %r %z'
05.03.2015 – 04:24:26 PM -0700
$ date +'%m.%d.%Y – %r %z' | utf8-unicode
(standard input):
0x30 = U+0030
0x35 = U+0035
0x2E = U+002E
0x30 = U+0030
0x33 = U+0033
0x2E = U+002E
0x32 = U+0032
0x30 = U+0030
0x31 = U+0031
0x35 = U+0035
0x20 = U+0020
0xE2 0x80 0x94 = U+2013
0x20 = U+0020
0x30 = U+0030
0x34 = U+0034
0x3A = U+003A
0x32 = U+0032
0x34 = U+0034
0x3A = U+003A
0x34 = U+0034
0x33 = U+0033
0x20 = U+0020
0x50 = U+0050
0x4D = U+004D
0x20 = U+0020
0x2D = U+002D
0x30 = U+0030
0x37 = U+0037
0x30 = U+0030
0x30 = U+0030
0x0A = U+000A
$
i仅在格式字符串中包含了持续操作。现在,这是在UTF-8终端中的,因此也许可以说明其中的某些差异。我碰巧知道Mac键盘上的en-dash(–)和em-dash(—)的密钥顺序( option - and shift> shift> shift option - ,其中 - 是"连字符"键)。如果您不在Mac上,那么密钥序列将有所不同。
请注意,我避免将它们全部包含在格式字符串参数周围的单个引号中。第一个报价的位置是"化妆品";无论是在那里还是date '+%m.…'
,date
都不会看到单个引号。
我设法使它起作用。我只需要逃脱我尝试过的空间,但是由于某种原因,我没有立即起作用。如您所见,这是一团糟,这是我将其拧紧的地方。但是它现在起作用,我认为这也是正确的。我放下了尾随的" G"全局修饰符,因为我只想要第一个编辑/更改的空间:
$date +'%m.%d.%Y' "%r" %z | sed s/ / - /
>05.03.2015 - 01:06:39 PM -0700
您只需要在 %Y
之后立即添加带有空间的dash -
,以便它保留在报价中:
date +'%m.%d.%Y -' "%r" %z