从sed和awk打印详细的进度

Vil*_*age 24 awk sed

该方案sedawk通常做他们的默默耕耘.有没有办法让这些程序说明他们在做什么?

Pau*_*aul 8

这是基于potong的答案.以下代码将'll'替换为'zz',创建备份文件,显示新文本,并将更改写入文件.

$ echo hello > test
$ sed -e 's/ll/zz/;w /dev/stdout' -i .backup test
hezzo
$ cat test
hezzo
$ cat test.backup 
hello
Run Code Online (Sandbox Code Playgroud)

  • 在较新的sed版本中,如果省略w之前的分号,则w成为"s"sed命令的参数,只有更改写入/ dev/stdout,这对我来说比编写整个文件更有用 (3认同)

小智 6

假设您正在将sed输出传递给文件,您可以使用tail命令(在另一个终端中)不断查看文件的结尾; 这样你就可以看到进步了.

tail -f output_from_sed.txt
Run Code Online (Sandbox Code Playgroud)


Edu*_*nec 5

如果您要将文件的输出重定向sedawk重定向到文件(而不是就地修改文件),您可以尝试pv(“管道查看器”):

sed -e '...' input.txt | pv > output.txt
Run Code Online (Sandbox Code Playgroud)

您可以使用pv -l它来报告写入行的进度。进度状态被打印到stderr,而实际数据则从 到stdin巡游stdout


pot*_*ong 5

这可能对你有用(对于sed):

sed -i 's/foo/bar/;w /dev/stdout' files*
Run Code Online (Sandbox Code Playgroud)

这将在应用更改后打印文件的内容.