0

我有一个 json 文件,其中包含以下示例代码行:

[{"tarih":"20130824","tarihView":"24-08-2013"},{"tarih":"20130817","tarihView":"17-08-2013"},{"tarih": "20130810","tarihView":"10-08-2013"},{"tarih":"20130803","tarihView":"03-08-2013"},{"tarih":"20130727","tarihView ":"27-07-2013"},{"tarih":"20130720","tarihView":"20-07-2013"},{"tarih":"20130713","tarihView":"13-07 -2013"},{"tarih":"20130706","tarihView":"06-07-2013"}]

我需要将 yy/mm/dd 格式的所有日期提取为具有正确行尾的文本格式:

20130824
20130817
20130810
20130803
...
20130706

如何使用 sed 或类似的控制台实用程序来做到这一点?

非常感谢您的帮助。

4

2 回答 2

2

此行适用于您的示例:

grep -Po '\d{8}' file

或使用 BRE:

grep -o '[0-9]\{8\}' file

它输出:

20130824
20130817
20130810
20130803
20130727
20130720
20130713
20130706

如果你想在之后提取字符串"tarih":",你可以:

grep -Po '"tarih":"\K\d{8}' file

它给出了相同的输出。

请注意,正则表达式不会进行日期字符串验证。

于 2013-08-24T22:35:46.697 回答
0

这在 python 中非常简单:

#!/bin/bash
python -c "vals=$(cat jsonfile)
for curVal in vals: print curVal['tarih']"

如果我将您的示例粘贴到jsonfile我得到此输出

20130824
20130817
20130810
20130803
20130727
20130720
20130713
20130706

这正是您需要的,对吧?

这是有效的,因为在 python 中 [] 是一个列表,而 {} 是一个字典,因此很容易从该结构中获取任何数据。这种方法也非常安全,因为如果数据中的某些字段包含{ , "或 sed 可能会查找的任何其他字符,它不会失败。它也不依赖于字段位置或字段数。

于 2013-08-24T22:40:37.423 回答