如何删除分隔文件中的前三列

时间:2017-03-07 03:30:30

标签: awk

例如,我有一个csv文件如下,

12345432|1346283301|5676438284971|13564357342151697 ...
87540258|1356433301|1125438284971|135643643462151697 ...
67323266|1356563471|1823543828471|13564386436651697 ...

以及数百个列但我想删除前三列并保存到新文件(如果可能的话,同一文件对我来说会更好)

这是我想要的结果。

13564357342151697 ...
135643643462151697 ...
13564386436651697 ...

我一直在寻找和尝试,但我无法做到。以下是我的代码。

awk -F'|' '{print $1 > "newfile"; sub(/^[^|]+\|/,"")}1' old.csv > new.csv

感谢有人可以帮助我。谢谢。

4 个答案:

答案 0 :(得分:3)

您可以使用cut

cut -f4- -d'|' old.csv  > new.csv

答案 1 :(得分:1)

这就是你要找的东西:

awk -F '|' '{$1=$2=$3=""; print $0}' oldfile > newfile

但是它会有前导空格,所以添加以下替换:

sub(/ ^ [\ t \ |] + /,"") - >更改为 sub(/ ^ [\ t \ |] + /,"")(从列删除中转义前导' |')

awk -F '|' '{$1=$2=$3="";OFS="|";sub(/^[ \t\|]+/,"") ;print $0}' oldFile > newFile

答案 2 :(得分:1)

@Heng:试试:

awk -F"|" '{for(i=4;i<=NF;i++){printf("%s%s",$i,i==NF?"\n":"|")};}'  Input_file

awk -F"|" 'FNR==1{++e;fi="REPORT_A1_"e;} {for(i=4;i<=NF;i++){printf("%s%s",$i,i==NF?"\n":"|") > fi}}'   Input_file1  Input_file2  Input_file3

您可以根据需要将此命令的输出重定向到文件中。

修改

    var json = $.ajax({
            url: (serviceType == "wcf" ? wcfServicesUrl : servicesApi) + wcfServiceUri,
            type: type,
            data: data,        
            crossDomain: true,
            contentType: "application/json",
            dataType: "json",
            xhrFields: {
                withCredentials: true
            },
            )};

答案 3 :(得分:0)

awk -F\| '{print $NF}' file >newfile

13564357342151697 ...
135643643462151697 ...
13564386436651697 ...