Linux에서 sed를 사용하여 CSV 파일의 모든 행의 두 번째 필드를 모두 변경하고 싶습니다.와는 별개로첫 번째 줄(예: 제목) 나는 그것을 한 줄에 사용하는 대신 sed -i '{$LINE_NUMBER ....' 를 사용하여 반복하고 한 줄씩 수행할 수 있다는 것을 알고 있지만 A 느린 없이 이 작업을 수행할 수 있는 방법이 있는지 궁금합니다. 고리.
나도 모든 것을 바꿀 수 있을 것 같아요. 그런 다음 다음 줄에서 이 특정 줄로 다시 변경합니다.
| Q1 | Q2 | Q3 |
| Name | Resource_ID | Key |
| Joseph | 343433| AGFD |
| Mary | 242355 | AREW |
답변1
귀하의 데이터를 보지 않고는 명확한 답변을 드릴 수 없지만 귀하의 설명을 바탕으로 찾고 계십니다 2,${}
. 예를 들어:
$ seq 5 | sed '2,${s/$/foo/}'
1
2foo
3foo
4foo
5foo
{}
이는 두 번째 줄부터 파일 끝까지 코드를 실행하는 것을 의미합니다 . 그러나 awk
기본적으로 "필드"를 처리할 수 있는 다른 도구를 사용하는 것이 더 나을 것입니다 .
답변2
당신이 하고 싶은 일을 위해서는 awk가 sed보다 거의 확실히 더 나은 선택입니다. 두 번째 필드를 수정한다고 말하면 실제로는 |
세 번째로 구분된 필드를 참조하는 것 같습니다. 이 경우에는 다음과 같습니다.
$ awk 'BEGIN{FS=OFS="|"} NR>1{$3=" whatever "} 1' file
| Q1 | Q2 | Q3 |
| Name | whatever | Key |
| Joseph | whatever | AGFD |
| Mary | whatever | AREW |