Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用awk修改文件? awk'//{ul++}ul==6{getline}1'/var/www/html/INFOSEC/english/test.html_Bash_Awk - Fatal编程技术网

Bash 如何使用awk修改文件? awk'//{ul++}ul==6{getline}1'/var/www/html/INFOSEC/english/test.html

Bash 如何使用awk修改文件? awk'//{ul++}ul==6{getline}1'/var/www/html/INFOSEC/english/test.html,bash,awk,Bash,Awk,如果我运行这行代码,shell将不会帮助我修改文件,相反,它只在shell中输出结果。任何人都能帮上忙吗???thx最简单的解决方案就是将输出发送到一个文件;您可能希望事先复制该文件,这样就不必覆盖正在读取的文件(否则可能导致不希望的行为) 您可以使用sed修改文件…@sdolgy:不,在这种情况下不可以sed无法执行他想要执行的编辑操作。+1但是,为了最大限度地保留原始文件(以防其他人需要阅读):awk'…'file>tmpfile&&mv tmpfile file@glenn jackman

如果我运行这行代码,shell将不会帮助我修改文件,相反,它只在shell中输出结果。任何人都能帮上忙吗???thx

最简单的解决方案就是将输出发送到一个文件;您可能希望事先复制该文件,这样就不必覆盖正在读取的文件(否则可能导致不希望的行为)


您可以使用
sed
修改文件…@sdolgy:不,在这种情况下不可以
sed
无法执行他想要执行的编辑操作。+1但是,为了最大限度地保留原始文件(以防其他人需要阅读):
awk'…'file>tmpfile&&mv tmpfile file
@glenn jackman:你说得对;但您的方法的缺点是,它不会保留原始文件的副本,以防出现问题。如果两者都需要,您当然可以写入临时文件,然后将原始文件复制到备份文件,然后将临时文件移动到原始文件。假设在awk过程中出现问题,它将以非零状态退出,“mv”将不会运行。我想的是,awk脚本本身包含一个错误,导致它输出错误的内容,没有错误。@glennjackman的方法工作得很好,不管假设的边缘情况如何。
awk '/<ul>/ {ul++} ul == 6 { getline } 1' /var/www/html/INFOSEC/english/test.html
cp test.html test.html.orig
awk 'your awk script here' test.html.orig >test.html
# and then optionally remove the copy:
rm test.html.orig