简体   繁体   English

油灰终端中的grep和cut命令

[英]Grep and cut command in putty terminal

I'm trying to cut a specific line from several files. 我正在尝试从多个文件中剪切特定的行。 I have about 300 json files. 我有大约300个json文件。

file structure:
{
"FieldName1": "XXXX",
"FieldName2": "1",
"FieldName3": "XXX",
"FieldName4": "XXX",
"FieldName5": "1",
.
.
.
}
,

 {
"FieldName1": "XXXX",
"FieldName2": "2",
"FieldName3": "XXX",
"FieldName4": "XXX",
"FieldName5": "2",
.
.
.
}

some of the files are written in one row: 有些文件写在一行中:

{"FieldName1": "XXXX", "FieldName2": "3", "FieldName3": "XXX", "FieldName4": "XXX", "FieldName5": "3"}, {"FieldName1": "XXXX", "FieldName2": "4", "FieldName3": "XXX", "FieldName4": "XXX", "FieldName5": "4"}, ...


}

What i need to get in my output file is just a list of 2 fields from the files : 我需要在输出文件中获取的只是这些文件中2个字段的列表:

"FieldName1": "1",
"FieldName2": "1",
"FieldName1": "2",
"FieldName2": "2",
"FieldName1": "3",
"FieldName2": "3",
"FieldName1": "4",
"FieldName2": "4",
.
.
.

Is there an easy way to do so? 有一个简单的方法吗?

Thanks! 谢谢!

For the single line, you can use this gnu awk (do to multiple characters in RS) 对于单行,可以使用此gnu awk (在RS中执行多个字符)

awk -v RS='"FieldName' 'NR>1 {sub(/, "/,",");print RS$0}' file
"FieldName1": "XXXX",
"FieldName2": "3",
"FieldName3": "XXX",
"FieldName4": "XXX",

For multiple line use grep or awk like this: 对于多行,请使用grepawk如下所示:

awk '/FieldName/' file
"FieldName1": "XXXX",
"FieldName2": "1",
"FieldName3": "XXX",
"FieldName4": "XXX",
"FieldName5": "1",

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM