将 java 版本结果附加到上面的行?



有没有办法将"java版本或许可拒绝"行附加到上面的行中,并在它们之间加上一个?我希望这样做是为了在 bash 上为红帽 6 进行数据操作。

谢谢

/apps/orautil/app/oracle/product/12.1.0/client_1/jdk/jre/lib/
java version "1.6.0_75"
/export/file/node/jre1.8.0_171/lib/
java version "1.8.0_171"
/test/jre1.8.0_171_linux/lib/
java version "1.8.0_171"
/usr/local/tripwire/te/agent/jre/lib/
sh: line 4: /usr/local/tripwire/te/agent/jre/lib/../bin/java: Permission denied

预期成果

/apps/orautil/app/oracle/product/12.1.0/client_1/jdk/jre/lib/,java version "1.6.0_75" 
/export/file/node/jre1.8.0_171/lib/,java version "1.8.0_171" 
/test/jre1.8.0_171_linux/lib/,java version "1.8.0_171" 
/usr/local/tripwire/te/agent/jre/lib/,sh: line 4: /usr/local/tripwire/te/agent/jre/lib/../bin/java: Permission denied

with bash

while true; do 
IFS= read -r line1
IFS= read -r line2
IFS= read -r line3
status=$?
printf "%s, %sn%sn" "$line1" "$line2" "$line3"
(( status != 0 )) && break
done < file

并带有awk

awk '
/java version/ || /Permission denied/ {printf ", %snn", $0; next} 
{printf "%s", $0} 
' file
# which can also be written as
awk '{
format = (/java version/ || /Permission denied/) ? ", %snn" : "%s"
printf format, $0
}' file

或者,通过操作输入/输出字段和记录分隔符

awk '
BEGIN {FS="n"; RS=""; OFS=", "; ORS="nn"}
{$1 = $1; print}
' file
# or, more tersely
awk '{$1=$1}1' FS='n' RS='' OFS=', ' ORS='nn' file

最新更新