특정 열의 하나의 테스트 문자열을 다른 테스트 문자열로 교체

특정 열의 하나의 테스트 문자열을 다른 테스트 문자열로 교체

탭으로 구분된 파일의 특정 열에서 "CC"를 "C"로, "AA"를 A"로 바꾸고 싶습니다( awk아마도 .

답변1

awk -F'\t' -vOFS='\t' '{ gsub("CC", "C", $1) ; gsub("AA", "A", $1) ; print }'

$1수정하려는 열로 바꿉니다 .

답변2

액세스 권한이 없지만 gsub()액세스 권한이 있는 경우 split()다음과 같이 동등한 항목을 만들 수 있습니다.

주어진 입력

AA      AA      CC      CC      AA      CC

다음 awk스크립트

BEGIN {
    OFS = "\t";
    split("1 3 5", Fields);
    split("A C", Replacements);
}
{
    for (i in Fields) {
        for (j in Replacements) {
            Replace = Replacements[j];
            sub(Replace Replace, Replace, $Fields[i]);
        }
    }
    print;
}

필드 1, 3, 5에 대해 원하는 결과를 생성합니다.

A       AA      C       CC      A       CC

그렇지 않더라도 블록 단위로 하드 코딩 하고 배열 split()하려는 경우 가능합니다 .FieldsReplacementsBEGIN

답변3

필드 내에서 찾아서 바꾸려면 다음 명령을 사용하십시오.

sed 's/whatyouwanttofind/whatyouwanttoreplace/field#'

즉, 당신은 이에 응답합니다:

$echo -e "1are,2are,3are,4are\n5are,6are,7are,8are"

1are,2are,3are,4are

5are,6are,7are,8are

당신은 이것을하고 싶어

$echo -e "1are,2are,3are,4are\n5are,6are,7are,8are" |  sed 's/are/arrr/2'

1are,2**arrr**,3are,4are

5are,6**arrr**,7are,8are

관련 정보