특정 열에서 하나의 테스트 문자열을 다른 테스트 문자열로 바꾸기

특정 열에서 하나의 테스트 문자열을 다른 테스트 문자열로 바꾸기

탭으로 구분된 파일의 특정 열에서 "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

관련 정보