Отфильтруйте.CSV файл на основе 5-х значений столбцов файла и распечатайте те записи в новый файл

Можно просто поместить код в отдельный файл и включать его с

dofile("somefile.lua")

Примечание: Рабочий каталог $HOME. Указывать файл относительно rc.lua можно использовать

dofile(awful.util.getdir("config") .. "/" .. "somefile.lua")

Если это - больше, чем просто некоторый код, и это могло бы использоваться другими также, могло бы иметь смысл создавать lua модуль, который может быть включен с

somemodule = require("somemodule")
16
09.03.2019, 11:01
3 ответа
awk -F '","'  'BEGIN {OFS=","} { if (toupper($5) == "STRING 1")  print }' file1.csv > file2.csv 

Вывод

"12310","42324564756","a simple string with a , comma","string with or, without commas","string 1","USD","12","70%","08/01/2013",""
"23525","74535243123","string , with commas, and - hypens and: semicolans","string with or, without commas","string 1","CAND","744","70%","05/06/2013",""

Я думаю, что Это - то, Что Вы хотите.

17
27.01.2020, 19:48
  • 1
    , который вывод точно, как мне был нужен он, чтобы быть. Я не думал о создании '","' как разделитель, иначе это решило бы мою проблему... отличное решение... –  Dhruuv 22.10.2013, 16:34
  • 2
    @Dhruuv '","' разделитель что большинство ответов на Ваш предыдущий предложенный вопрос :). –  terdon♦ 22.10.2013, 17:59
  • 3
    @terdon: да, я знаю, но это не вошло в мой ум, когда у меня была проблема. Откровенно говоря, я думал, что это могло бы быть что-то с командой или чем-то другим, чем разделители, которое вызывало проблему... :) Следовательно не дал ему попытку... :( –  Dhruuv 22.10.2013, 20:17
  • 4
    @Dhruuv, не уверенный в деталях, так как я не могу сказать то, что Вы пытаетесь еще сделать только Ваш условие, является почти наверняка неправильным. Вы пытаетесь распечатать ony, если 5$ являются HYPERION? Если так, попробуйте else{if(toupper($5)=="HYPERION"){print}}. Не в моем компьютере в данный момент, таким образом, у меня мог бы быть синтаксис неправильно, но Вы еще не можете дать условие оператор. –  terdon♦ 01.11.2013, 05:52
  • 5
    awk -F '","' 'BEGIN {OFS=","} { if (NR==1) {print} else{if (toupper($5) == "STRING 1") print} }' file1 –  limovala 01.11.2013, 11:51
awk 'BEGIN {FS = "," }'  '{ (if toupper($5)  == "STRING 1") print; }'  file1.csv > file2.csv
-1
27.01.2020, 19:48
  • 1
    К сожалению, но, Ваше решение не возвращает записей из файла... Я думаю, просто добавив разделитель как '","' Точка сделаю... спасибо... :) –  Dhruuv 22.10.2013, 16:36
  • 2
    @Mohsen-1, потому что 1) необходимо выйти, "или они не поняты как части разделителя файла. См. ответы на другой вопрос OP и 2) Вы разделяете НАЧАТЬ блок от остальной части команды, которая полностью повреждает его. Попробовать awk 'BEGIN {FS = "," }' '{print $0}', Вы будете видеть, что это не производит вывода. В будущем протестируйте свои ответы, чтобы видеть, работают ли они на самом деле прежде, чем отправить их. –  terdon♦ 22.10.2013, 23:32
[114738]Проблема с CSV в том, что нет стандарта. Если вам часто приходится иметь дело с данными в формате CSV, то, возможно, вы захотите поискать более надежный метод, а не просто использовать [115099]","[115100] в качестве разделителя полей. В этом случае, Perl's [115101]Text::CSV[115102] CPAN модули исключительно хорошо подходят для задания:

2
27.01.2020, 19:48

Теги

Похожие вопросы