매개변수를 전달하여 Linux에서 CSV 파일에 열을 추가합니다.

매개변수를 전달하여 Linux에서 CSV 파일에 열을 추가합니다.

런타임 시 매개변수를 전달하여 Linux의 CSV 파일에 열을 추가하고 싶습니다.

예를 들어 내 입력 파일의 Input.csv내용은 다음과 같습니다.

abc,Nodes.csv
def,Nodes.csv
ghi,Nodes.csv
jkl,Nodes.csv

이제 다음과 같은 스크립트를 실행할 때 런타임에 매개변수를 전달하고 싶습니다../Datafile.sh CRE_ff

출력 파일은 다음과 같아야 합니다.

CRE_ff_Nodes_abc,abc,Nodes.csv
CRE_ff_Nodes_abc,def,Nodes.csv
CRE_ff_Nodes_abc,ghi,Nodes.csv
CRE_ff_Nodes_abc,jkl,Nodes.csv

답변1

다음 명령 을 만들 수 있습니다 csvprepend.

#!/usr/bin/gawk -f

BEGIN  { field=ARGV[1]; delete ARGV[1]; OFS=","}
       { print field,$0 }

그리고 그것을 사용하십시오 :

$ chmod 755 cvsprepend               # turn it in an executable command
$ cvsprepend "New field" old.csv
New Field,abc,Nodes.csv
New Field,def,Nodes.csv

세부 사항:

  • field=ARGV[1]; delete ARGV[1] 첫 번째 명령줄 인수를 저장합니다. ~처럼field
  • OFS="," 출력 필드 구분 기호 설정
  • print field,$0 새 필드, OFS, 이전 레코드를 인쇄합니다.

답변2

아래의 awk 및 sed 명령을 사용해 보세요. 파이썬, 잘 작동해요

이상한 해결책 :

awk  '{print "CRE_ff_Nodes_abc,"$0}' filename

산출

CRE_ff_Nodes_abc,abc,Nodes.csv
CRE_ff_Nodes_abc,def,Nodes.csv
CRE_ff_Nodes_abc,ghi,Nodes.csv
CRE_ff_Nodes_abc,jkl,Nodes.csv

명령 2:

sed "s/^/CRE_ff_Nodes_abc,/g" filename

산출

CRE_ff_Nodes_abc,abc,Nodes.csv
CRE_ff_Nodes_abc,def,Nodes.csv
CRE_ff_Nodes_abc,ghi,Nodes.csv
CRE_ff_Nodes_abc,jkl,Nodes.csv

파이썬

#!/usr/bin/python
o=open('filename','r')
for i in o:
    print "CRE_ff_Nodes_abc,{0}".format(i).strip()

산출

CRE_ff_Nodes_abc,abc,Nodes.csv
CRE_ff_Nodes_abc,def,Nodes.csv
CRE_ff_Nodes_abc,ghi,Nodes.csv
CRE_ff_Nodes_abc,jkl,Nodes.csv

관련 정보