我在文件A中有一个主机名列表,另外还有一个文件中包含完整主机名详细信息的文件BI希望删除所有与B文件中的主机匹配的主机。任何简短的脚本都可以这样做吗?请让我知道。
前:
cat A
server1
server2
server3
server4
cat B
server700
server1
server300
server4
所以在A和B中,server1和server4是匹配的,所以我需要一个脚本,它从A文件中删除所有匹配的服务器名称
答案 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
。去图。