AWK에서 입력 필드를 삭제하는 방법은 무엇입니까?

MLu

awk(또는 gawk)을 사용 하여 일부 데이터를 변환 하고 출력을 다시 인쇄하기 전에 입력 필드 중 하나를 삭제하고 싶습니다.

내가 달성하고 싶은 것은 다음과 같습니다.

~ $ echo 'field1,field2,field3' | awk -F, '{transform($1); delete($2); print $0;}'
new_field1,field3

난 그냥에 빈 문자열을 할당 할 수 없습니다 $2에 그 리드가 있기 때문에 new_field1,,field3(두 개의 쉼표를 참고).

원하는 필드 만 명시 적으로 인쇄 할 수 있지만 3보다 훨씬 많은 필드가 있고 끝에 선택적 필드가 있기 때문에 매우 우아하지는 않습니다 (여기에 표시되지 않음). 그것이 내가 선호하는 이유 print $0입니다. 먼저 일부 필드를 제거하면됩니다.

어떤 생각?

케이스

awk에서 필드를 삭제하는 것은 매우 어렵습니다. 매우 간단한 (그리고 종종 필요한) 작업 인 것처럼 보이지만,해야 할 것보다 어렵습니다.

추가 구분 기호가 인쇄되지 않도록 awk에서 필드를 완전히 삭제하는 방법이 있습니까?를 참조하십시오 . 이를위한 좋은 방법은 Stack Overflow에서

rmcol()@ghoti의 대답에 함수를 복사 했으므로 여기 U & L에 사본이 있습니다.

function rmcol(col,     i) {
  for (i=col; i<NF; i++) {
    $i=$(i+1)
  }
  NF--
}

현재 입력 행에서 지정된 열을 삭제하고 NF일치 시킬 필드 카운터 ( )를 감소시킵니다 .

나는 당신의 transform()함수가 무엇을하는지 전혀 모르기 때문에 그것을 복제하려고 시도하지도 않을 것입니다. 그러나 여기 rmcol()awk한 줄로 사용하는 예가 있습니다 .

$ echo 'field1,field2,field3' | awk -F, -v OFS=, '
  function rmcol(col,     i) {
    for (i=col; i<NF; i++) {
      $i=$(i+1)
    }
    NF--
  }

  { rmcol(2); print; }
  '
field1,field3

BTW, 입력 줄에서 여러 필드를 삭제해야하는 경우 역순으로 삭제하는 것이 가장 좋습니다 / 가장 쉽습니다. 즉, 가장 높은 번호의 필드를 먼저 삭제하십시오 . 왜? 높은 번호의 필드는 낮은 번호의 필드를 삭제할 때마다 번호가 다시 매겨지기 때문에 어떤 필드 번호가 어떤 필드에 속하는지 추적하기가 매우 어렵습니다.


BTW, delete()in awk은 입력 행에서 필드를 삭제하는 것이 아니라 배열의 요소를 삭제하기위한 것입니다. 당신은 할 수 split()각 입력 (에 라인 FS배열로) 및 2 차 배열 요소를 삭제,하지만 당신은 작성해야 할 것 join()쉼표 (또는와 배열을 인쇄하는 기능을 OFS각 필드를 분리).

모든 배열 awk이 연관 배열 이기 때문에 그렇게하는 것조차 예상보다 더 복잡 할 것입니다 (즉, 숫자 인덱스 아님 ). 따라서 배열 요소 3+를 요소 2+로 자동으로 이동 delete(array[2]) 하지 않습니다 . 입력 필드에 delete()대해 수행하는 배열에 대해 거의 동일한 작업을 수행하려면 자체 래퍼 함수를 ​​작성해야 rmcol()합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

TextField에 입력 한 텍스트를 삭제 불가능하게 만드는 방법은 무엇입니까?

분류에서Dev

Java의 HashTable에서 노드를 삭제하는 방법은 무엇입니까?

분류에서Dev

Cassandra에서 레코드를 삭제하는 방법은 무엇입니까?

분류에서Dev

$ 0를 인쇄 할 때 awk에서 필드 구분 기호를 제거하는 방법은 무엇입니까?

분류에서Dev

awk를 사용하여 열에서 필드 구분 기호를 삭제하고 바꾸는 방법은 무엇입니까?

분류에서Dev

입력 필드에 값을 입력하면 범위를 표시하는 방법은 무엇입니까? Angular JS

분류에서Dev

양식에 입력 필드를 하나만 제출하는 방법은 무엇입니까?

분류에서Dev

여러 입력 필드에서 필드 인덱스를 얻는 방법은 무엇입니까?

분류에서Dev

Kotlin에서 유형 삭제를 방지하는 방법은 무엇입니까?

분류에서Dev

AWK를 사용하여 출력의 마지막 두 줄을 삭제하는 방법은 무엇입니까?

분류에서Dev

Angular Reactive Form에서 필드를 제거하는 방법은 무엇입니까?

분류에서Dev

js를 사용하여 입력 필드에 텍스트를 삽입하는 방법은 무엇입니까?

분류에서Dev

Angular에서 필터링 된 입력 필드를 지우는 방법은 무엇입니까?

분류에서Dev

Ubuntu에서 로그를 삭제하는 방법은 무엇입니까?

분류에서Dev

DeepDiff에서 특정 단어를 삭제하는 방법은 무엇입니까?

분류에서Dev

Jupyter Lab에서 셀 삭제를 취소하는 방법은 무엇입니까?

분류에서Dev

laravel에서 여러 ID를 삭제하는 방법은 무엇입니까?

분류에서Dev

AWS 콘솔에서 AWSServiceRoleForSupport를 삭제하는 방법은 무엇입니까?

분류에서Dev

vector <ptr *>에서 객체를 삭제하는 방법은 무엇입니까?

분류에서Dev

NestJ에서 데이터를 삭제하는 방법은 무엇입니까?

분류에서Dev

Postgresql에서 삭제 쿼리를 기록하는 방법은 무엇입니까?

분류에서Dev

angularjs에서 $ rootScope 변수를 삭제하는 방법은 무엇입니까?

분류에서Dev

배열에서 요소를 삭제하는 방법은 무엇입니까?

분류에서Dev

rabbitMQ에서 메시지를 삭제하는 방법은 무엇입니까?

분류에서Dev

LibreOffice에서 북마크를 삭제하는 방법은 무엇입니까?

분류에서Dev

vimrc에서 삭제 키를 매핑하는 방법은 무엇입니까?

분류에서Dev

Swift에서 CGRect를 삭제하는 방법은 무엇입니까?

분류에서Dev

SQL Server에서 기본 키를 삭제하는 방법은 무엇입니까?

분류에서Dev

Postgres에서 일시 삭제를 적용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    TextField에 입력 한 텍스트를 삭제 불가능하게 만드는 방법은 무엇입니까?

  2. 2

    Java의 HashTable에서 노드를 삭제하는 방법은 무엇입니까?

  3. 3

    Cassandra에서 레코드를 삭제하는 방법은 무엇입니까?

  4. 4

    $ 0를 인쇄 할 때 awk에서 필드 구분 기호를 제거하는 방법은 무엇입니까?

  5. 5

    awk를 사용하여 열에서 필드 구분 기호를 삭제하고 바꾸는 방법은 무엇입니까?

  6. 6

    입력 필드에 값을 입력하면 범위를 표시하는 방법은 무엇입니까? Angular JS

  7. 7

    양식에 입력 필드를 하나만 제출하는 방법은 무엇입니까?

  8. 8

    여러 입력 필드에서 필드 인덱스를 얻는 방법은 무엇입니까?

  9. 9

    Kotlin에서 유형 삭제를 방지하는 방법은 무엇입니까?

  10. 10

    AWK를 사용하여 출력의 마지막 두 줄을 삭제하는 방법은 무엇입니까?

  11. 11

    Angular Reactive Form에서 필드를 제거하는 방법은 무엇입니까?

  12. 12

    js를 사용하여 입력 필드에 텍스트를 삽입하는 방법은 무엇입니까?

  13. 13

    Angular에서 필터링 된 입력 필드를 지우는 방법은 무엇입니까?

  14. 14

    Ubuntu에서 로그를 삭제하는 방법은 무엇입니까?

  15. 15

    DeepDiff에서 특정 단어를 삭제하는 방법은 무엇입니까?

  16. 16

    Jupyter Lab에서 셀 삭제를 취소하는 방법은 무엇입니까?

  17. 17

    laravel에서 여러 ID를 삭제하는 방법은 무엇입니까?

  18. 18

    AWS 콘솔에서 AWSServiceRoleForSupport를 삭제하는 방법은 무엇입니까?

  19. 19

    vector <ptr *>에서 객체를 삭제하는 방법은 무엇입니까?

  20. 20

    NestJ에서 데이터를 삭제하는 방법은 무엇입니까?

  21. 21

    Postgresql에서 삭제 쿼리를 기록하는 방법은 무엇입니까?

  22. 22

    angularjs에서 $ rootScope 변수를 삭제하는 방법은 무엇입니까?

  23. 23

    배열에서 요소를 삭제하는 방법은 무엇입니까?

  24. 24

    rabbitMQ에서 메시지를 삭제하는 방법은 무엇입니까?

  25. 25

    LibreOffice에서 북마크를 삭제하는 방법은 무엇입니까?

  26. 26

    vimrc에서 삭제 키를 매핑하는 방법은 무엇입니까?

  27. 27

    Swift에서 CGRect를 삭제하는 방법은 무엇입니까?

  28. 28

    SQL Server에서 기본 키를 삭제하는 방법은 무엇입니까?

  29. 29

    Postgres에서 일시 삭제를 적용하는 방법은 무엇입니까?

뜨겁다태그

보관