shell - 为什么 awk 给我一个致命错误:I/O?
问题描述
我正在尝试在我的脚本中执行以下代码。这是我的代码的一小部分,它在成功执行我的脚本后引发 I/O 错误。
我对代码的使用有什么问题吗?输出后,我不需要该错误消息将其打印在我的屏幕上。
awk '/.edu { sub(".edu",".edu")}}1' | sed 's/\.edu/.fail/g' < temp1.txt >> output.txt
解决方案
这个:
awk 'script' | sed 'script' < file
告诉 sed 期望它的输入来自 awk 的输出,然后说“哦,不用等待 - 从文件中取它”。它还告诉 awk 在没有输入的情况下运行,所以它会挂起等待你输入一些东西。您可能打算改为这样写:
awk 'script' file | sed 'script'
所以 awk 读取file
并将其输出到 sed。话虽如此,您永远不需要将 awk 输出通过管道传输到 sed,您可以在原始 awk 脚本中做任何您想做的事情。你写了:
awk '/.edu | .eda/{c++; if (c==2) { sub(".edu",".edu")}}1' | sed 's/\.edu/.fail/g' < temp1.txt
并在评论中说:
我的要求是:如果在我的输入中看到 .edu 或 .eda ,请将其替换为 .fail。如果该行同时具有 .eda 和 .edu,则仅将 .edu 替换为 .fail 保持 .eda 原样
所以这可能是您真正想要的(未经测试,因为您没有提供任何示例输入/输出来测试:
awk '!sub(/\.edu/,".fail"){sub(/\.eda/,".fail")}1' temp1.txt
推荐阅读
- makefile - cmake 为 cmake_link_script 试运行
- r - purrr:map2 和 mutate 中的管道问题
- python - 如何通过在python中声明全局来从另一个函数调用变量?
- java - 如何使 showData() 为不同的数据类型提供单独的结果?
- c# - 如何使用 c# Visual Studio 更改 XML 文件中的值
- javascript - 如何使用变量作为选择器定位多个 div
- java - 无法将 java.lang.Class 隐式转换为 c# 对象
- python - python-socketio 客户端无法获取公共数据,但 NodeJS socket.io-client 没有
- r - 识别用于抓取的 Web 表格格式
- r - 根据其他列计算列中的总数 - R