【发布时间】:2013-09-27 02:27:30
【问题描述】:
我正在浏览并从文件中读取行。他们有大量不必要的信息,我想重新格式化这些行以供以后使用,以便以后可以使用必要的信息。
文件(file1)中的示例行
Name: *name* Date: *date* Age: *age* Gender: *gender* Score: *score*
假设我只想从文件中提取性别和年龄并稍后使用
换行
*gender*, *age*
在 bash 中:
while read line; do
<store variable for gender>
<store variable for age>
<overwrite each line in CSV - gender,age>
<use gender/age as inputs for later comparisons>
done < file1
编辑:条目中没有稳定性。可以使用echo $line | cut 找到一个值,使用[ $line =~ "keyValue" ] 找到另一个值,然后设置该值
我正在考虑这样存储两个变量的组合:
newLine="$val1,$val2"
然后使用 sed 内联替换将 $line 替换为 $newLine。
还有更好的方法吗?这可能归结为变量的 sed 格式问题。
【问题讨论】:
-
条目的顺序是否稳定?是否保证所有条目都出现在每一行中?如果不能保证它们都出现,那么如何处理有年龄但没有性别或有性别但没有年龄的行?大概,既没有 Age 也没有 Gender 的行会被忽略?
-
“使用性别/年龄作为以后比较的输入”是什么意思?另外,介意在 CSV 文件中显示示例行吗?而且您不需要名称作为参考来替换目标性别/年龄吗? CSV 文件中的信息是否仅与一个人有关?
name和date这样的值确实有空格,对吗?附言使用 Ruby 处理 CSV 文件更容易。 -
*name*(或任何其他字段)可以包含空格吗?它可以包含冒号吗?您提到了 CSV,但我在您的输入中没有看到任何逗号 - 您发布的输入行真的代表您的实际输入吗?发布几行实际示例输入和预期输出。