gpt4 book ai didi

linux - 如何将一个文件中的行替换/添加到另一个文件

转载 作者:行者123 更新时间:2023-12-03 09:53:59 26 4
gpt4 key购买 nike

我有一个如下例所示的文件,我需要 grep 以 system_props(cat file1 | grep ^system_props) 开头的行..

JAVA_HOME=`find "$AGENT_HOME/jre" -name release -type f 2>/dev/null | sed "s|/release||g"`

system_props="$system_props -sensu.controller.hostName=abc.nam.net"
system_props="$system_props -sensu.controller.port=8181"
system_props="$system_props -sensu.controller.node=Mcagent"

if [ -z "$JAVA_HOME" ]; then
if [ -d "/opt/middleware" ]; then
JAVA_HOME=`find /opt/middleware -type d -name jre 2>/dev/null | grep WebSphere | grep java | grep -v grep | sort | uniq`
fi
fi

我有另一个名为 file2 的文件,其中包含如下所示的虚拟内容。

JAVA_HOME=`find "$AGENT_HOME/jre" -name release -type f 2>/dev/null | sed "s|/release||g"`

system_props="$system_props -sensu.controller.hostName=testhost.net"
system_props="$system_props -sensu.controller.port=8080"

if [ -z "$JAVA_HOME" ]; then
if [ -d "/opt/middleware" ]; then
JAVA_HOME=`find /opt/middleware -type d -name jre 2>/dev/null | grep WebSphere | grep java | grep -v grep | sort | uniq`
fi
fi

现在我的要求是替换cat file1 | 的内容grep ^system_propscat file2 | grep ^system_props)

system_props 行的预期输出应添加到 file2 中,该 file2 与 file1 中的顺序相同。

system_props="$system_props -sensu.controller.hostName=abc.nam.net"
system_props="$system_props -sensu.controller.port=8181"
system_props="$system_props -sensu.controller.node=Mcagent"

最佳答案

您可以尝试关注吗?编写并使用示例进行测试。

awk '
FNR==NR{
if(match($0,/system_props="/)){
val=(val?val ORS:"")$0
}
next
}
/^system_props="/{
if(++count==1){
print val
}
next
}
1
' Input_file1 Input_file2

说明:为上述代码添加详细说明。

awk '                                ##Starting awk program from here.
FNR==NR{ ##Checking condition FNR==NR which will be TRUE when Input_file1 is being read.
if(match($0,/system_props="/)){ ##Checking condition if match for string system_props=" is found in current line then do following.
val=(val?val ORS:"")$0 ##Creating variable val and keep appending current line value to its value here.
}
next ##next will skip all further statements from here.
}
/^system_props="/{ ##Checking condition if line is starting from sting system_props=" then do following.
if(++count==1){ ##Checking condition if variable count is 1 then do following.
print val ##Printing val variable here.
}
next ##next will skip all further statements from here.
}
1 ##1 will print edited/non-edited line here.
' file1 file2 ##Mentioning Input_file names here.

关于linux - 如何将一个文件中的行替换/添加到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60262631/

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