我希望按描述列过滤行。我想过滤掉所有包含“免费WiFi”的行,然后创建一个csv文件并将其逗号分开。
HOTELID|AMENITYCODE|DESCRIPTION
722602|8|24-hour front desk
722602|109|Air conditioning
722602|23|Dry cleaning
722602|81|Fax/photocopying
722602|107|Free WiFi
723303|11|Fitness centre
723303|107|Free WiFi
723303|205|Fruits
723303|79|Hammam
723303|80|Heating
723303|44|Ironing service
723303|176|Kid meals
我可以使用哪些shell / Java / C#脚本来执行此操作并由Windows中的任务计划程序使用。
谢谢, 斯潘塞
答案 0 :(得分:4)
您可以使用像这样的PowerShell管道
Import-Csv .\input.txt -Delimiter '|' | ? { $_.Description -notlike '*Free Wifi*' } | Export-Csv -NoTypeInformation processed.csv
其中input.txt
是您的输入文件,processed.csv
将包含没有WiFi内容的新CSV。
答案 1 :(得分:0)
在基本的Java中,我们可以使用以下代码:
package com.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.opencsv.CSVWriter;
public class Test {
public static void main(String[] args) {
String readFile = "C:\\test.txt";
String line = "";
String cvsSplitBy = "\\|";
String filter1="Free WiFi";
List<String[]> output = new ArrayList<String[]>();
String writeFile = "C:\\testout.csv";
try (BufferedReader br = new BufferedReader(new FileReader(readFile))) {
output.add(0, br.readLine().split(cvsSplitBy));
while ((line = br.readLine()) != null) {
String[] input = line.split(cvsSplitBy);
if(input[2].contains(filter1)) {
output.add(input);
}
}
File file = new File(writeFile);
FileWriter outputfile = new FileWriter(file);
CSVWriter writer = new CSVWriter(outputfile);
writer.writeAll(output);
writer.close();
System.out.println("Program ended");
} catch (IOException e) {
e.printStackTrace();
}
}
}