名字、中间名、姓氏、头衔、后缀、昵称、Given Yomi、Surname Yomi。。。。 安吉尔、罗梅罗、、罗米、。。。。
名字、姓氏、昵称 安吉尔、罗梅罗、罗米
cut-d','-f“名字”文件
名字、中间名、姓氏、头衔、后缀、昵称、Given Yomi、Surname Yomi。。。。 安吉尔、罗梅罗、、罗米、。。。。
名字、姓氏、昵称 安吉尔、罗梅罗、罗米
cut-d','-f“名字”文件
切割-d','-f'1,3,6'
csvcut-Sc“名字”,“姓氏”file.csv
awk-v tags='名字,姓氏,昵称'' 开始{ FS=“,*”; OFS=“,” numOutFlds=拆分(标记,outFldNr2tag) } NR==1{ 对于(inFldNr=1;inFldN r<=NF;inFldNr++){ tag=$inFldNr tag2inFldNr[标签]=inFldN } } { 用于(outFldNr=1;outFldNr<=numOutFlds;outFldNr++){ tag=outFldNr2tag[outFldNr] inFldNr=标签2inFldN r[标签] val=$inFldNr 打印f“%s%s”,val,(outFldNr<numOutFld?OFS:ORS) } } '文件 名字、姓氏、昵称 安吉尔、罗梅罗、罗米
$猫csvcut.awk #csvcut.awk公司 函数csvsplit(str、arr、i、j、n、s、fs、qt){ #将逗号分隔的字段拆分为arr; 返回arr中的字段数 #双引号括起来的字段可以包含逗号; #双引号表示单个嵌入引号 删除arr; s=“启动”; n=0; fs=“,”; qt=“\” 对于(i=1;i<=长度(str)); i++){ 如果(s==“启动”){ if(substr(str,i,1)==fs){arr[++n]=“”} else if(substr(str,i,1)==qt){j=i+1;s=“INQUOTES”} 否则{j=i;s=“INFIELD”}} 否则,如果(s==“INFIELD”){ if(substr(str,i,1)==fs){ arr[++n]=子(str,j,i-j); j=0; s=“开始”}} else if(s==“INQUOTES”){ if(substr(str,i,1)==qt){s=“MAYBEDOUBLE”}} 否则,如果(s==“可能加倍”){ if(substr(str,i,1)==fs){ arr[++n]=子(str,j,i-j-1) gsub(qt-qt,qt,arr[n]); j=0; s=“开始”}} 如果(s==“INFIELD”||s==”INQUOTES“){arr[++n]=substr(str,j)} 否则,如果(s==“可能加倍”){ arr[++n]=子(str,j,长度(str)-j); gsub(qt-qt,qt,arr[n])} else如果(s==“START”){arr[++n]=“”} 返回n} 开始{#读取和存储输出字段名 对于(i=1;i<ARGC;i++){字段[++nfields]=ARGV[i];ARGV[i]=“”}} NR==1{#读取并存储输入字段名,写入输出头 对于(i=1;i<=csvsplit($0,arr)); i++){名称[arr[i]]=i} 对于(i=1;i<=nfields;i++){printf“%s%s”,sep,字段[i];sep=“,”} 打印“\n”} NR>1{#读取输入记录,分割字段,写入输出记录 删除csv; sep=“”; n=csvsplit($0,csv) 对于(i=1;i<=域;i++){ 打印f“%s%s”,sep,csv[名称[字段[i]]]; sep=“,”} 打印“\n”} $cat mahmoud.input 名字、中间名、姓氏、头衔、后缀、昵称、GivenYomi、姓氏Yomi 安吉尔、罗梅罗、、、罗米、,, $awk-f csvcut.awk名字姓氏昵称<mahmoud.input 名字、姓氏、昵称 安吉尔、罗梅罗、罗米
cat文件 名字、中间名、姓氏、头衔、后缀、昵称、名字Yomi、姓氏Yomi 安吉尔、罗梅罗、、、罗米、,,
ruby-r CSV-e'BEGIN{wanted=[“名字”,“姓氏”,“昵称”] 把想要的东西放到csv } CSV.parse($<.read,headers:true).each{ |h |放入h.to_hash.select{ |k、 想要包含吗? (k) }.values.to_csv}'文件
名字、姓氏、昵称 安吉尔、罗梅罗、罗米