sed를 사용하여 특정 줄 번호(제목)를 제외한 파일의 모든 내용을 변경하시겠습니까?

sed를 사용하여 특정 줄 번호(제목)를 제외한 파일의 모든 내용을 변경하시겠습니까?

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 |

관련 정보