Let's 구현하십시오 sed 명령
우리는 샘플을 고려하십시오 CSV 파일에 다음과 같은 내용:
$ cat file
Solaris,25,11
Ubuntu,31,2
Fedora,21,3
LinuxMint,45,4
RedHat,12,5
- 제 1 장 또는 열:
$ sed 's/[^,]*,//' file
25,11
31,2
21,3
45,4
12,5
이 정규표현식 검색에 대한 시퀀스의 쉼표([^,]*)문자를 삭제하는 결과 1 년에서 필드를 사용할 수 있습니다.
- 인쇄 마지막 분야,또는 제거를 제외한 모든 필드를 마지막 필드:
$ sed 's/.*,//' file
11
2
3
4
5
이 regex 제거한 모든 것이 마지막까지 쉼표(.*,) 는 결과를 삭제하는 모든 분야를 제외하고 마지막 필드입니다.
- 만 인쇄 제 1 회 분야:
$ sed 's/,.*//' file
Solaris
Ubuntu
Fedora
LinuxMint
RedHat
이 정규 표현식(,.*) 을 제거하자 1 일부터 시작 쉼표가 끝날 때까지는 결과를 삭제하는 모든 분야를 제외하고 마지막 필드입니다.
- 삭제 2 필드:
$ sed 's/,[^,]*,/,/' file
Solaris,11
Ubuntu,2
Fedora,3
LinuxMint,4
RedHat,5
Regex(,[^,]*,)검색에 대한 쉼표와 일련의 문자 뒤에 쉼표하는 결과가 일치에서 2 번째 열,그리고 대체 이 패턴 매칭으로 다만 쉼표로,궁극적으로 끝나는 삭제에서의 제 2 열에 있습니다.
참고:을 삭제하는 분야에서 중간 더 험악에서 나오기 때문에 모든 분야 일치하는 말 그대로 있습니다.
- 만 인쇄 2nd 필드:
$ sed 's/[^,]*,\([^,]*\).*/\1/' file
25
31
21
45
12
Regex 과 일치하는 첫번째 필드 두 번째 필드고 나머지는,그러나 그룹의 2 차 분야 혼자입니다. 전체 라인은 지금으로 대체 2 드(\1)에 따라서만 제 2 필드가 표시됩니다.
- 만 인쇄 라인에서는 마지막 열은 한 자리 숫자:
$ sed -n '/.*,[0-9]$/p' file
Ubuntu,31,2
Fedora,21,3
LinuxMint,45,4
RedHat,12,5
Regex(,[0-9]$)확인을 위해 한 자리에서의 마지막 필드와 p 명령어 라인과 일치하는 이 상태입니다.
- 숫자의 모든 라인에서 파일
$ sed = file | sed 'N;s/\n/ /'
1 Solaris,25,11
2 Ubuntu,31,2
3 Fedora,21,3
4 LinuxMint,45,4
5 RedHat,12,5
이것은 시뮬레이션의 고양이-n 명령입니다. awk 그것을 사용하여 쉽게 특별한 변수 NR. 는'='명령의 sed 에게 줄 수의 모든 라인을 따라 라인에 의해 자체입니다. Sed 출력이 파이프를 다른 sed 명령에 가입하는 모든 2 개 라인입니다.
- 대체는 마지막 분야에 의하면 99 1 장은'우분투':
$ sed 's/\(Ubuntu\)\(,.*,\).*/\1\299/' file
Solaris,25,11
Ubuntu,31,99
Fedora,21,3
LinuxMint,45,4
RedHat,12,5
이 regex matches'우분투'를 끝까지를 제외하고 마지막 열고 그룹의 각각뿐만 아니라 그들을. 에서 교체 부분,1,2 그룹과 함께 새로운 수 99 으로 대체됩니다.
- 삭제 2 필드인 경우 제 1 필드가'RedHat':
$ sed 's/\(RedHat,\)[^,]*\(.*\)/\1\2/' file
Solaris,25,11
Ubuntu,31,2
Fedora,21,3
LinuxMint,45,4
RedHat,,5
1 드'레드햇',제 2 회 분야고 나머지 분야는 그룹,교체가 수행으로만 제 1 회 그리고 마지막 그룹,resuting 점점에서 2 번째 필드 삭제됩니다.
- 를 삽입하는 새로운 컬럼 끝나(마지막 열):
$ sed 's/.*/&,A/' file
Solaris,25,11,A
Ubuntu,31,2,A
Fedora,21,3,A
LinuxMint,45,4,A
RedHat,12,5,A
Regex(.*) 경기 전체 라인으로 대체 라인 자체(&)및 새로운 분야이다.
- 를 삽입하는 새 열을 시작 부분에서(1 열):
$ sed 's/.*/A,&/' file
A,Solaris,25,11
A,Ubuntu,31,2
A,Fedora,21,3
A,LinuxMint,45,4
A,RedHat,12,5
같은 마지막 예를 들어,일치하는 라인은 다음에 의하여 새 열을
이 도움이 될 것입니다. 알려해야 하는 경우 사용하여 Awk 또는 다른 명령입니다.
감사
sed -Ei "$rownum s/$newvalue/$col" file.csv
고 그것을 던져 오류가지만 자세한 내용을 알고 싶습니다. 모든 자원을 읽에 도움이 될 것입니다.