是否可以将文本字符串重定向到“参数内指定”行而不是文件的后者?或者命令/和/或参数、子 shell 的组合(如果无法通过重定向实现)。
答案1
使用 GNU awk
:
text_string='some arbitrary
text'
line_number=12
file=/some/file
STRING="$text_string" gawk -i /usr/share/awk/inplace.awk -v n="$line_number" -e '
NR == n {print ENVIRON["STRING"]}
{print}' -E /dev/null "$file"
perl
与:相同
perl -spi -e '$_ = "$string\n$_" if $. == $n
' -- -string="$text_string" -n="$line_number" -- "$file"
它们就地编辑文件(实际上用编辑后的副本替换它)。
gawk 变体不适用于名为-
.要编辑-
当前目录中调用的文件,请改用./-
。
还,不使用-i inplace
as尝试首先从当前工作目录gawk
加载inplace
扩展(asinplace
或),有人可能已经在其中植入了恶意软件。随系统提供的扩展inplace.awk
的路径可能会有所不同,请参阅输出inplace
gawk
gawk 'BEGIN{print ENVIRON["AWKPATH"]}'