
런타임 시 매개변수를 전달하여 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