我正在尝试AWK文件将两个列值解析为一对,然后在循环中使用它们来检查特定应用程序相对于服务器的状态。
文件的语法:
CELL **NAME_OF_CELL** MC **SERVERNAME.COM**/PORT_NUMBER
文件:
#Cells
cell app_dynamics_21 mc dynamics21.xxxx.com/5021
cell windows_app mc windows_app.app.com/5041
我对name_of_cell和servername.com感兴趣,所以我的awk看起来像
sed '/^\s*$/d' $FILE |grep -v -e"#" -e"server" -e"gw_ps" | awk '{print $2" "$4}' | grep -i -e"windows" -e"app" -e"smartphone" > $DIRECTORY/CLEAN_FILE
CLEAN_FILE看起来如下所述,
server unixhost2.test.com:3115
app_dynamics_21 dynamics21.xxxx.com/5021
windows_app windows_app.app.com/5041
根据我的sed,我不应该在clean_file中看到服务器,接下来我想读取每一行并在一个变量中保存NAME_OF_CELL而在另一个变量中保存SERVERNAME.COM以验证应用程序和服务器的状态。
需要SED和AWK的帮助才能从文件中提取这些NAME_OF_CELL和SERVERNAME.COM。
答案 0 :(得分:1)
awk可以做sed和grep可以做的事情,所以把它全部放到一个脚本中:
awk -v IGNORECASE=1 '
/#/ || /server/ || /gw_ps/ {next}
/windows/ || /app/ || /smartphone/ {print $2, $4}
' "$FILE" > clean_file
但您可能希望/^[[:blank:]]*#/
删除评论,而不是盲目地删除任何地方带有哈希的任何行。