使用awk保存修改

使用awk保存修改

我在学习awk我想知道是否有一个选项可以将更改写入文件,类似于sed在那里我会用-i选项来保存对文件的修改。

我明白,我可以使用重定向来编写更改。然而,在awk这么做?


Helenr
浏览 1698回答 3
3回答

达令说

最新的GNU Awk(自4.1.0发布),它可以选择“inplace”文件编辑:[.]使用新设施建造的“inplace”扩展可以用来模拟GNU。sed -i“特征.[.]示例用法:$ gawk -i inplace '{ gsub(/foo/, "bar") }; { print }' file1 file2 file3为了保持备份:$ gawk -i inplace -v INPLACE_SUFFIX=.bak '{ gsub(/foo/, "bar") } > { print }' file1 file2 file3

守着一只汪

除非你有GNU awk 4.1.0或更高版本.。你不会有像sed那样的选择-i相反,可以这样做:$ awk '{print $0}' file > tmp && mv tmp file注:-i不是魔术,它还创建了一个临时文件。sed只是帮你处理。截至GNU awk 4.1.0.。GNU awk在4.1.0版中添加了此功能(2013年5月10日公布)..它不像仅仅给-i如已发布的说明所述:新的-i选项(来自xgawk)用于加载awk库文件。这与-f不同,因为第一个非选项参数被视为脚本。你需要使用捆绑inplace.awk包含文件以正确调用扩展名,如下所示:$ cat file123 abc456 def789 hij $ gawk -i inplace '{print $1}' file $ cat file123456789变量INPLACE_SUFFIX可用于指定备份文件的扩展名:$ gawk -i inplace -v INPLACE_SUFFIX=.bak '{print $1}' file $ cat file123456789$ cat file.bak123 abc456 def789 hij我很高兴添加了这个特性,但是对我来说,实现并不是很尴尬,因为它的功能来自于语言的简洁性和-i inplace8个字符太长了吗?I.M.O..下面是指向手册官方的说法。

元芳怎么了

另一种选择是使用sponge:awk '{print $0}' your_file | sponge your_file在你替换的地方'{print $0}'通过你的awk脚本your_file根据要在适当位置编辑的文件的名称。sponge在将输入保存到文件之前完全吸收输入。
打开App,查看更多内容
随时随地看视频慕课网APP