我根据手册页拼凑了这个,只是略读它:
$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
我似乎无法在中间获得冲刺。如果我逃脱它,我可以使用我上面的空间;看起来像一个%
字面值是通过用另一个百分比来逃避百分比来完成的,例如:%%
换行符有%n
,还有一些其他修饰符。如何连接由短划线界定的两个?
我希望在日期格式中完成所有操作,就像我在其他语言中所做的那样。我真的不想管道sed或awk或用“ - ”替换第一个空格。
答案 0 :(得分:3)
最好(单个)引用整个格式字符串作为一个,而不是混合使用单引号,双引号和反斜杠转义。我当然认为这是最清楚的写作方式:
date +'%m.%d.%Y - %r %z'
答案 1 :(得分:2)
我很困惑你有任何问题。在Mac上进行测试(10.10.3),我只是在格式字符串中包含了en-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
$
我只是在格式字符串中包含了en-dash。现在,这是一个UTF-8终端,所以也许可以解释一些差异。我碰巧知道Mac键盘上的en-dash( - )和em-dash( - )的键序列( Option - 和 Shift 选项 - ,其中 - 是'连字符 - 键'键。如果您不在Mac上,则键序列会有所不同。
请注意,我不必通过将它们全部包含在格式字符串参数周围的单引号内来转义空格。第一个引用的位置是'化妆品&#39 ;; shell会删除它,无论它是否存在,date '+%m.…'
和date
都不会看到单引号。
答案 2 :(得分:0)
我设法让它发挥作用。我只是想逃离我试过的空间,但出于某种原因,它并没有马上工作。正如你将看到的,这是一个烂摊子,这是我搞砸了。但它现在有效,我认为这也是正确的。我放弃了尾随" g"全局修饰符因为我只想编辑/修改第一个空格:
$date +'%m.%d.%Y'\ "%r"\ %z | sed s/\ /\ -\ /
>05.03.2015 - 01:06:39 PM -0700
答案 3 :(得分:0)
您只需要在-
之后立即添加带有空格的短划线%Y
,以便它保留在引号内:
date +'%m.%d.%Y -'\ "%r"\ %z