我正在尝试在脚本中执行以下代码。 这只是我代码的一小部分,成功执行脚本后会引发I / O错误。
我的代码使用有什么问题。输出后,我不需要该错误消息即可将其打印在屏幕上。
awk '/.edu { sub(".edu",".edu")}}1' | sed 's/\.edu/.fail/g' < temp1.txt >> output.txt
答案 0 :(得分:1)
此:
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
答案 1 :(得分:0)
您确定
urlpatterns = [
path('', v.ReportHome.as_view(), name='ReportHome'),
path('_sidebar', v.SelectorSidebar.as_view(), name='SelectorSidebar'),
]
正在做什么?在出现awk '/.edu | .eda/{c++; if (c==2) { sub(".edu",".edu")}}1'
或<any character>edu
的第二行上,它用.edu
替换<any characyer>eda
。
这方面的另一个错误:您没有为此awk命令提供任何输入。
然后,将temp1.txt的内容和awk的标准输出都重定向到sed(也很奇怪)
<any character>edu
我想这就是为什么您会遇到I / O错误的原因。
如果awk命令很有用,请执行以下操作:
awk ... | sed 's/\.edu/.fail/g' < temp1.txt
如果awk命令没用,请执行以下操作:
awk '/.edu | .eda/{c++; if (c==2) { sub(".edu",".edu")}}{gsub("\.edu",".fail")}1' temp1.txt >> output.txt
我的要求是:如果在输入中看到.edu或.eda,请用.fail替换它。如果该行同时包含.eda和.edu,则仅将.edu替换为.fail并保持.eda不变
输入示例:
sed 's/\.edu/.fail/g' temp1.txt >> output.txt
代码:
.eda
.edu .eda
.eda .edu
.edu
hello world
您将获得:
awk '!/\.edu/{gsub(/\.eda/,".fail")}{gsub(/\.edu/, ".fail")}1' test.txt >> output.txt