在文件过滤方面需要帮助

时间:2015-06-13 18:59:54

标签: linux shell unix scripting

我在文件A中有一个主机名列表,另外还有一个文件中包含完整主机名详细信息的文件BI希望删除所有与B文件中的主机匹配的主机。任何简短的脚本都可以这样做吗?请让我知道。

前:

cat A 
server1
server2
server3
server4 

cat B
server700
server1
server300
server4 

所以在A和B中,server1和server4是匹配的,所以我需要一个脚本,它从A文件中删除所有匹配的服务器名称

3 个答案:

答案 0 :(得分:1)

这些方面的东西可能会帮助你。调整grep命令上的正则表达式,以确保只匹配详细信息文件中的主机名:

cat file_with_hostnames | while read hname; do grep -q "$hname" file_with_host_details || echo $hname; done

答案 1 :(得分:1)

有点像,

ddb_conn = dynamodb2.connect_to_region(region, self.creds[CRED_ACCESS_KEY], self.creds[CRED_SECRET_KEY], self.creds[CRED_SECURITY_TOKEN])

values_table = Table(table_name, connection=ddb_conn)
key = {"id": {"S": customer_id }}
update_expression = "SET #cv = :new_values, version = :new_version"
condition_expression = "version = :existing_version"
expression_attribute_names = {"#cv" : "customer-values"}

existing_item = values_table.get_item(id=customer_id)
existing_version = existing_item['version']
new_version = existing_version + 1

expression_attribute_values = {":new_values": {"N": str(new_values)}, ":new_version": {"N": str(new_version)}, ":existing_version": {"N": str(existing_version)}}  

ddb_conn.update_item(table_name, key, update_expression=update_expression, condition_expression=condition_expression, expression_attribute_names=expression_attribute_names, expression_attribute_values=expression_attribute_values)

答案 2 :(得分:0)

comm --output-delimiter="|" -3 A B|sed 's/^|//'

注1:这需要GNU comm。 注2:comm(1)要求对文件进行排序。 注3:与'|'的怪异字符是因为comm不允许空output-delimiter。去图。