bash - 如何使用 grep/awk/sed 打印到某个字符?
问题描述
我是一个完整的 shell 脚本初学者,我正在尝试遍历一组 JSON 文件并尝试从中提取某个字段。每个 JSON 文件都有一个"country:"xxx"字段。在每个 JSON 文件中,有 10k 个具有相同国家名称的相同字段,所以我只需要第一次出现,我可以使用 "-m 1" 来做到这一点。
我尝试为此使用 grep,但无法弄清楚如何在第一次出现时从每个文件中提取包括国家名称在内的整个字段。
for FILE in *.json;
do
grep -o -a -m 1 -h -r '"country":"' $FILE;
done
我尝试使用另一个管道并使用以下模式,但它不起作用
| egrep -o '^[^"]+'
实际输出:
"country":"
"country":"
"country":"
期望的输出:
"country:"romania"
"country:"united kingdom"
"country:"tajikistan"
但我需要整件事。任何帮助都会很棒。谢谢
解决方案
关于“我只想要第一次出现”这个问题有一个普遍的答案,答案是:
... | head -n 1
这意味着,无论你做什么:拿头(第一行),-n
开关让你可以说出你想要多少(在这种情况下是一个)。
对于最后一次出现的情况也可以这样做,但随后您使用tail
代替head
(您也可以使用-n
开关)。
推荐阅读
- java - 如何使用 PHP/Java Bridge 在 Web 浏览器中显示 Jasper 报告?
- c# - 指数数组的边界之外。使用 EP Plus
- windows - 如何在 Windows 下打包 Vala 应用程序?
- python-3.x - 如何使用python从句子中找到医学单词?
- php - 致命错误:在 Cakephp 中找不到接口“JsonSerializable”
- c# - 在我的 .Net 框架应用程序中,“startup.cs”(.Net Core)的等价物是什么?
- php - 我从 youtube-api 收到“500 后端错误”和“400 无效元数据”
- javascript - 通过 JavaScript 使用 Canvas,如何在 Y 参数内绘制 X 次图片?
- java - CompletableFuture join() 导致主线程挂起
- java - 针对特定表格布局裁剪单元格数据。iText 2.1.7