如何在 awk END 语句中写入对文件的更改
How to write changes to file in awk END statement
我在使用 awk 功能的地方用这个“bash”脚本替换了一些字符串。
我可以以某种方式将更改保存到 END 语句中的文件吗?或者这不是
awk 是如何完成的。或者您会推荐结合使用 grep 和 sed 吗?
#!/usr/bin/bash
FILENAME=
SUBSTRING=
echo $FILENAME
cat $FILENAME | awk '
BEGIN {
IGNORECASE=1
foundinput=0
};
{
if (foundinput={
if ([=10=] ~ /INPUT/){
start=match([=10=], /\/.*$/)
SUBTHIS=substr([=10=], start)
sub(SUBTHIS, "'$SUBSTRING'")
print([=10=])
}
}
}
{gsub(" ", "", [=10=])}
b=/BRAKEDISC/
{
if (b={
foundinput=1
};
}
END {
print [=10=] > "input.bak"
}
'
如有任何建议,我将不胜感激。
干杯,
克里斯托弗
看起来您不需要 END 块。您只需要将输出重定向到 input.bak 等:
awk '{...}' filename > input.bak
我在使用 awk 功能的地方用这个“bash”脚本替换了一些字符串。 我可以以某种方式将更改保存到 END 语句中的文件吗?或者这不是 awk 是如何完成的。或者您会推荐结合使用 grep 和 sed 吗?
#!/usr/bin/bash
FILENAME=
SUBSTRING=
echo $FILENAME
cat $FILENAME | awk '
BEGIN {
IGNORECASE=1
foundinput=0
};
{
if (foundinput={
if ([=10=] ~ /INPUT/){
start=match([=10=], /\/.*$/)
SUBTHIS=substr([=10=], start)
sub(SUBTHIS, "'$SUBSTRING'")
print([=10=])
}
}
}
{gsub(" ", "", [=10=])}
b=/BRAKEDISC/
{
if (b={
foundinput=1
};
}
END {
print [=10=] > "input.bak"
}
'
如有任何建议,我将不胜感激。
干杯, 克里斯托弗
看起来您不需要 END 块。您只需要将输出重定向到 input.bak 等:
awk '{...}' filename > input.bak