我的文件里面有文字,如下:
class Program
{
static void Main()
{
var baseAddress = new Uri("http://localhost:8080/ProtoBuf");
using (var serviceHost = new ServiceHost(typeof(ProtoBufService), baseAddress))
{
var endpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(IProtoBufService)),
new NetHttpBinding(),
new EndpointAddress(baseAddress));
endpoint.EndpointBehaviors.Add(new ProtoEndpointBehavior());
serviceHost.AddServiceEndpoint(endpoint);
serviceHost.Open();
Console.ReadKey();
}
}
}
此数据与项目"名称"相关。并且它的颜色ID"
我需要从ID中拆分Name并将它们放在单独的变量中。
作为一个注释,当使用10以下的数字时,ID都可以有0或者前导0,所以我需要解析它们出现的那些(04需要保持04而1需要保持1而不是4或01)
名称中可以包含下划线(_),连字符( - )或空格(),这些也需要保留。
以下是我阅读文件的内容,该文件在循环中逐行读取文件,这很好,但我无法弄清楚如何正确地分离我想要的变量。
471_068 0
AALIAN 1
ASHLEY-U 95
CATRIONA_W 97
STESSY K 08
答案 0 :(得分:3)
read
可以自己做到这一点。请参阅BashFAQ #1。
while IFS=$'\t' read -r key value; do
echo "First Var is $key - Remaining Line Contents Are $value"
done
请注意,如果您要放弃第二列之后的任何内容(而不是将该内容附加到该值),则会改为:
while IFS=$'\t' read -r key value _; do
echo "First Var is $key - Second Var is $value"
done
如果您希望以能够按名称查找ID的方式存储ID,则关联数组(在bash 4.0中添加)是正确的工具:
declare -A color_ids=( )
while IFS=$'\t' read -r key value; do
color_ids[$key]=$value
done
for name in "${!color_ids[@]}"; do
value=${color_ids[$name]}
echo "Stored name $name with value $value"
done