bash - bash 尾错误:使用 -c 选项时无法打开输入
问题描述
我正在尝试确定在哪里切断日志以缩小其大小。该日志于 2010 年开始,并由此后每天运行的脚本附加。我正在查找日志的每一行以提取其中包含日期的行,然后我想获取这些行的最后 4 个字符,因为它代表年份。然后我可以确定例如 2018 年首先出现在哪一行,并截断上面的文件。
我正在尝试使用 tail -c 4 来获取每行的最后 4 个字符,但我不断收到来自 tail 的“无法打开输入”错误。
代码:
#!/bin/bash
date=$(grep ' EST ' input.log)
IFS=$'\n'
for line in $date
do
printf "%s\n" "$line" > output.tmp
chmod 777 output.tmp
echo $(tail -c 4 output.tmp)
done
当我只使用“tail output.tmp”运行此代码时,没有任何选项,它按预期工作并输出当前正在迭代的完整行。
但是当我尝试使用 tail -c 4 时,就会出现“tail:无法打开输入”错误。
我已经检查了 tail 的手册页,并且 -c 选项可用,那么我做错了什么?或者除了使用tail之外还有更好的方法来解决这个问题吗?(我的系统上没有可用的 grep -o 选项)。
解决方案
您不需要临时文件:
#!/bin/bash
date=$(grep ' EST ' input.log)
IFS=$'\n'
for line in $date
do
echo ${line: -4}
done
推荐阅读
- jquery - jQuery 在 Laravel 8 中无法正常工作
- python - 我已经解决了这个问题。我只是想有一些深入的解释
- spring-boot - Gradle bootBuildImage 使用 docker:dind 服务在 GitLab CI/CD 中失败并显示“未找到摘要”
- java - Eclipse 错误:SLF4J:类路径包含多个 SLF4J 绑定
- pm2 - 无法更改 PM2 日志路径
- javascript - Material-UI:如何在反应管理员中替换 backgroundImage css
? - node.js - Node.js 在 Windows Server 上使用 React 在生产中出现 404 错误
- javascript - 如何在不使用 django 表单的情况下从 fetch post 接收 django 视图中的图像文件
- svg - 如何创建具有特定角度和半径的甜甜圈派的路径?
- visual-studio - 刷新数据集更改访问数据库的结构