我有一個文件由空格分隔。 我需要編寫一個awk命令來接收主機名稱參數 並且它應該替換主機名,如果它已經在文件中定義了。 它必須完全匹配而不是部分 - 如果文件包含此主機名:localhost 搜索「ho」將失敗並將其添加到文件末尾。如何從文件中刪除一行使用awk過濾某些字符串
另一個選項是delete:awk接收主機名參數,如果存在,它應該從文件中刪除它。
這是我到目前爲止有:(它需要一些改進)
if [ "$DELETE_FLAG" == "" ]; then
# In this case the entry should be added or updated
# if clause deals with updating an existing entry
# END clause deals with adding a new entry
awk -F"[ ]" "BEGIN { found = 0;} \
{ \
if ($2 == $HOST_NAME) { \
print \"$IP_ADDRESS $HOST_NAME\"; \
found = 1; \
} else { \
print \$0; \
} \
} \
END { \
if (found == 0) { \
print \"$IP_ADDRESS $HOST_NAME\";
} \
} " \
/etc/hosts > /etc/temp_hosts
else
# Delete an existing entry
awk -F'[ ]' '{if($2 != $HOST_NAME) { print $0} }' /etc/hosts > /etc/temp_hosts
fi
感謝
謝謝,這種修改的確有竅門! – embedded 2010-04-19 08:52:51