gpt4 book ai didi

linux - bash : Replace entire line

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:16 26 4
gpt4 key购买 nike

我使用以下行来获取出现特定字符串的行号:

nLine=$(awk '/text/{ print NR; exit }' $1)
echo "line = $nline"

返回:

line = 78

现在,我想使用以下方法将此特定行替换为其他字符串:

awk 'NR==$nLine {$0="new text $2"} 1' test.xml

其中 $2 是赋予 bash 脚本的参数。

当直接输入终端或将参数设置为:时,此命令行工作正常:

awk 'NR==78 {$0="new text data"} 1' test.xml

但是当向命令提供参数时,它永远不会按预期工作..

另外,是否可以避免在终端中打印?因为当我将 >/dev/null 放在行末尾时,不会添加任何内容。

最佳答案

要替换行,您可以使用

Sed or Awk

指定 sed 中的行号或 awk 中的 NR(记录数),如下例所示

awk 'NR==34 { sub("AAA", "BBB") }'

或者如果你想在命令行上指定多个文件,可以使用FNR(文件编号记录)。

awk 'FNR==34 { sub("AAA", "BBB") }

'或

sed '34s/AAA/BBB/'

您可以使用变量进行替换,也可以使用 $ 符号1

关于linux - bash : Replace entire line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32861799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com