awk根据第4列在每个uniq模式之前添加单词
您好,我将如何在文件$4列中每个新模式的开始和结束处指定所需的输出 由于$4列中的不同操作系统类型,始终有不同的行数 这对我不起作用awk根据第4列在每个uniq模式之前添加单词,awk,pattern-matching,add,Awk,Pattern Matching,Add,您好,我将如何在文件$4列中每个新模式的开始和结束处指定所需的输出 由于$4列中的不同操作系统类型,始终有不同的行数 这对我不起作用 awk -v RS= '{$0 = "OS_PLATFORM_VALID_BEGIN\n" $4 "\nOS_PLATFORM_VALID_END"} 1'file awk -v RS= '{$0 = "OS_PLATFORM_VALID_BEGIN\n" $1" "$2" "$3 $4" "$5 " "$6" "$7" "$8" "$9"\nOS_PLATFOR
awk -v RS= '{$0 = "OS_PLATFORM_VALID_BEGIN\n" $4 "\nOS_PLATFORM_VALID_END"} 1'file
awk -v RS= '{$0 = "OS_PLATFORM_VALID_BEGIN\n" $1" "$2" "$3 $4" "$5 " "$6" "$7" "$8" "$9"\nOS_PLATFORM_VALID_END"} 1' file
这对我不起作用
LIB SITE A LINUX X64 DC58 ROOM DC LOC 2.b
LIB SITE A LINUX X64 DC58 ROOM DC LOC 2.b
LIB SITE A OPENV X64 DC22 ROOM DC LOC 2.b
LIB SITE A OPENV X64 DC22 ROOM DC LOC 2.b
LIB SITE A OPENV X64 DC22 ROOM DC LOC 2.b
LIB SITE A WIN9K X64 DC22 ROOM DC LOC 2.b
LIB SITE A WIN9K X64 DC22 ROOM DC LOC 2.b
LIB SITE A WIN9K X64 DC22 ROOM DC LOC 2.b
LIB SITE A WIN9K X64 DC22 ROOM DC LOC 2.b
LIB SITE B RHEL X64 DC10 ROOM DE LOC 3.ma
LIB SITE B RHEL X64 DC10 ROOM DE LOC 3.ma
LIB SITE B RHEL X64 DC10 ROOM DE LOC 3.ma
LIB SITE B RHEL X64 DC10 ROOM DE LOC 3.ma
LIB SITE B SUSE X64 DC10 ROOM DE LOC 3.ma
LIB SITE B SUSE X64 DC10 ROOM DE LOC 3.ma
LIB SITE B SUSE X64 DC10 ROOM DE LOC 3.ma
LIB SITE B SUSE X64 DC10 ROOM DE LOC 3.ma
LIB SITE A LINUX X64 DC41 ROOM DF LOC 5.p
LIB SITE A LINUX X64 DC41 ROOM DF LOC 5.p
LIB SITE A LINUX X64 DC41 ROOM DF LOC 5.p
LIB SITE A LINUX X64 DC41 ROOM DF LOC 5.p
LIB SITE A OPENV X64 DC41 ROOM DF LOC 5.p
LIB SITE A OPENV X64 DC41 ROOM DF LOC 5.p
LIB SITE A OPENV X64 DC41 ROOM DF LOC 5.p
它应该是这样的:
OS_PLATFORM_VALID_BEGIN
LIB SITE A LINUX X64 DC58 ROOM DC LOC 2.b
LIB SITE A LINUX X64 DC58 ROOM DC LOC 2.b
OS_PLATFORM_VALID_END
OS_PLATFORM_VALID_BEGIN
LIB SITE A OPENV X64 DC22 ROOM DC LOC 2.b
LIB SITE A OPENV X64 DC22 ROOM DC LOC 2.b
LIB SITE A OPENV X64 DC22 ROOM DC LOC 2.b
OS_PLATFORM_VALID_END
OS_PLATFORM_VALID_BEGIN
LIB SITE A WIN9K X64 DC22 ROOM DC LOC 2.b
LIB SITE A WIN9K X64 DC22 ROOM DC LOC 2.b
LIB SITE A WIN9K X64 DC22 ROOM DC LOC 2.b
LIB SITE A WIN9K X64 DC22 ROOM DC LOC 2.b
OS_PLATFORM_VALID_END
OS_PLATFORM_VALID_BEGIN
LIB SITE B RHEL X64 DC10 ROOM DE LOC 3.ma
LIB SITE B RHEL X64 DC10 ROOM DE LOC 3.ma
LIB SITE B RHEL X64 DC10 ROOM DE LOC 3.ma
LIB SITE B RHEL X64 DC10 ROOM DE LOC 3.ma
OS_PLATFORM_VALID_END
OS_PLATFORM_VALID_BEGIN
LIB SITE B SUSE X64 DC10 ROOM DE LOC 3.ma
LIB SITE B SUSE X64 DC10 ROOM DE LOC 3.ma
LIB SITE B SUSE X64 DC10 ROOM DE LOC 3.ma
LIB SITE B SUSE X64 DC10 ROOM DE LOC 3.ma
OS_PLATFORM_VALID_END
OS_PLATFORM_VALID_BEGIN
LIB SITE A LINUX X64 DC41 ROOM DF LOC 5.p
LIB SITE A LINUX X64 DC41 ROOM DF LOC 5.p
LIB SITE A LINUX X64 DC41 ROOM DF LOC 5.p
LIB SITE A LINUX X64 DC41 ROOM DF LOC 5.p
OS_PLATFORM_VALID_END
OS_PLATFORM_VALID_BEGIN
LIB SITE A OPENV X64 DC41 ROOM DF LOC 5.p
LIB SITE A OPENV X64 DC41 ROOM DF LOC 5.p
LIB SITE A OPENV X64 DC41 ROOM DF LOC 5.p
OS_PLATFORM_VALID_END
你可以用
awk 'BEGIN{print "OS_PLATFORM_VALID_BEGIN"}
{ if (!seen[$4]++ && NR>1) {
print "OS_PLATFORM_VALID_END" ORS "OS_PLATFORM_VALID_BEGIN" }
}1;
END{print "OS_PLATFORM_VALID_END"}' file > outfile
见
详细信息
-在脚本执行开始时,打印BEGIN{print“OS\u PLATFORM\u VALID\u BEGIN”}
OS\u PLATFORM\u VALID\u BEGIN
-如果字段4值出现异常,并且不是第一行,则打印{if(!seen[$4]+&&NR>1){print“OS_PLATFORM_VALID_END”或“OS_PLATFORM_VALID_BEGIN”}1
和OS_PLATFORM_VALID_END
行,否则,只打印该行(OS_PLATFORM_VALID_BEGIN
末尾是默认的行输出触发结构)1
-脚本末尾打印END{print“OS\u PLATFORM\u VALID\u END”}
OS\u PLATFORM\u VALID\u END
$0
。