我有 CSV文件的单词及其频率以及 .txt文件,其中包含多个感兴趣的单词,以换行符分隔。
我正在寻找一种方法来检查对于CSV的每一行,第一列值(单词)是否也在.txt文件中。
我想类似于fgrep -x -f patternfile.txt data.csv
的东西,除了只有1列CSV而不是整行?
答案 0 :(得分:4)
嘿你可以使用FasterCSV打开并循环播放记录。
FasterCSV.foreach("#{file_path}") do |row|
puts row[0]#row[0] is the first column only
end
答案 1 :(得分:2)
如果我们使用bash,那将是:
fgrep -x -f patternfile.txt data.csv | awk '{print $2}'
作为从grep结果中获取第二列的简单方法
答案 2 :(得分:1)
要检查文件中是否至少有一个特定字符串:
IO.readlines(filename).map(&:chomp).include?("somestring")
答案 3 :(得分:1)
使用awk
你可以做这样的事情 -
awk -v FS="," 'NR==FNR{a[$1]=$0;next} ($1 in a){print a[$1]}' csv_file txt_file
,
[jaypal:~/Temp] cat csv_file
jack,4
rabbit,10
cat,4
red,39
[jaypal:~/Temp] cat txt_file
red
rabbit
cat
[jaypal:~/Temp] awk -v FS="," 'NR==FNR{a[$1]=$0;next} ($1 in a){print a[$1]}' csv_file txt_file
red,39
rabbit,10
cat,4
答案 4 :(得分:0)