我有一个json文件,包括以下代码示例行:
[{ “tarih”: “20130824”, “tarihView”: “24-08-2013”},{ “tarih”: “20130817”, “tarihView”: “17-08-2013”},{” tarih “:” 20130810" , “tarihView”: “2013年10月8日”},{ “tarih”: “20130803”, “tarihView”: “2013年3月8日”},{ “tarih”: “20130727” “tarihView”: “27-07-2013”},{ “tarih”: “20130720”, “tarihView”: “20-07-2013”},{ “tarih”: “20130713”, “tarihView”:” 13-07-2013 “},{” tarih “:” 20130706" , “tarihView”: “2013年6月7日”}]
我需要将yy / mm / dd格式的所有日期提取为具有正确行结尾的文本格式:
20130824
20130817
20130810
20130803
...
20130706
如何使用sed或类似的控制台实用程序执行此操作?
非常感谢你的帮助。
答案 0 :(得分: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
它提供相同的输出。
请注意,正则表达式不会进行日期字符串验证。
答案 1 :(得分: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 []中是list而{}是dictionary,因此很容易从该结构中获取任何数据。此方法非常安全,因为如果您的数据中的某些字段包含{
,
"
或任何其他可能看起来的字符,它就不会失败对于。它也不依赖于场地位置或场数。