bash에서 N 열의 값 바꾸기

프로 코더

아래 샘플이 있습니다

a12,b12122,c12,d12
a13,887988,c13,d13
a14,b14121,c79,d13 

난 단지 변경하려면 79HH를 열이 올 경우에만 가능합니다.

내가 할 때

awk -F, '$2~"79"' myfile | sed 's/79/hh/g' > temp && mv  temp myfile 

그것은 나에게 두 번째 줄과 첫 번째와 세 번째가 사라졌습니다.

그것은 단지에만 교체 그래서, 그래서 난 내 코드에서 무엇을 교체해야 79 값에 887,988HH

다른 포럼에서 아래 코드와 같이 할 수 있지만 코드 오류가 발생한 것 같습니다.

$ awk '{gsub("79","hh",$2)}1' myfile 

a12,b112122,c12,d12
a13,887988,c13,d13
a14,b14121,c79,d13 

[편집] 아래 작업 덕분에

awk -F, 'BEGIN { OFS = FS } $2 ~ /79/ { sub(/79/, "hh", $2) }1' file

하지만 새 샘플에서 쉼표를 제거하려고 할 때

내 샘플은

cat > myfile
"a12","b112122","c12,d12"
a13,887988,c13,d13
a14,b14121,c79,d13

내가 열 2에서 " 를 제거하려고 할 때

awk -F, 'BEGIN { OFS = FS } $2 ~ /"/ { sub(/"/, "", $2) }1' myfile 
"a12",b112122","c12,d12"
a13,887988,c13,d13
a14,b14121,c79,d13

그것은 단지 대신에, 단지 1 쉼표를 제거 b112122 내가 얻고있다 "b112122을

내가 뭘 잘못하고 있니?

내 코드의 파트 2가 있습니다.

2 에서만 b1시작 하고 길이가 6 이어야 하는 grep을 어떻게 할 수 있습니까?

만약 내가한다면

cat myfile | grep -x '.\{6\}'  | grep "^[b1]"

그것은 나에게 빈 결과를 준다.

b1로 시작하고 길이가 6 인 경우에만 awk (예 : $ 2 ~ / b1 / )는 무엇입니까 ?

이니 안

포함하는 행 요소를 식별하고 79이를 사용하여 교체를 수행 하기 위해 부품을 결합해야합니다.sub()

awk -F, 'BEGIN { OFS = FS } $2 ~ /79/ { sub(/79/, "hh", $2) }1' file

시도의 문제 sed는 첫 awk번째 행이 대체 및 리디렉션시 하나의 행만있는 새 파일을 생성하는 두 번째 행만 필터링한다는 것입니다.

위에서 내가 가진 것은 $2as를 포함하는 행에서만 조건부 대체를 79수행하고 대체를 수행합니다. 일치하지 않는 다른 행의 경우 기본 인쇄가 수행되어 행 {..}1을 인쇄합니다.

최적의 방법을 찾고 있다면 아래와 같이 대체를 수행하기 전에 중복 검사를 피할 수 있습니다. sub()는 패턴을 포함하지 않는 행에 대한 조치를 무시 하기 때문 입니다.이 경우 행은 단순히 인쇄됩니다.

awk -F, 'BEGIN { OFS = FS } sub(/79/, "hh", $2) 1' file

b16으로 시작 하고 길이에 대한 추가 질문에 대해 다음을 수행해야합니다.

awk -F, 'BEGIN { OFS = FS } $2 ~/^b1/ && length($2) == 6' file

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

R에서 두 열의 값 바꾸기

분류에서Dev

mongodb에서 배열의 값 바꾸기

분류에서Dev

mongodb에서 배열의 값 바꾸기

분류에서Dev

netCDF에서 배열의 값 바꾸기

분류에서Dev

열에서 기호 (+/-) 당 값 바꾸기

분류에서Dev

Bash의 텍스트 문서에서 열 값 바꾸기 / 업데이트

분류에서Dev

Swift에서 배열 값 바꾸기

분류에서Dev

R에서 열 값 범위 바꾸기

분류에서Dev

배열에서 값 그룹 바꾸기

분류에서Dev

한 열에서 다른 두 열의 NaN 값 바꾸기

분류에서Dev

R 4.0에서 tibble의 값 바꾸기

분류에서Dev

Python의 목록에서 값 바꾸기

분류에서Dev

R에서 벡터의 값 바꾸기

분류에서Dev

배열의 값 바꾸기

분류에서Dev

열 값 바꾸기

분류에서Dev

R에서 목록 목록 열의 값 바꾸기

분류에서Dev

배열의 인덱스에서 값 바꾸기

분류에서Dev

한 파일의 값을 bash에서 다른 파일의 값으로 바꾸기

분류에서Dev

다른 열의 한 열 조건에있는 값 바꾸기 : R

분류에서Dev

조건에서 한 열의 값을 다른 열 값으로 바꾸기

분류에서Dev

Pandas DataFrame의 조건에 따라 열의 값 바꾸기

분류에서Dev

numpy 배열에서 누락 된 값을 임의의 값으로 바꾸기

분류에서Dev

numpy 배열에서 누락 된 값을 임의의 값으로 바꾸기

분류에서Dev

n 개의 연속 항목을 기준으로 열의 값 바꾸기

분류에서Dev

Julia에서 배열의 0 만 다른 배열의 값으로 바꾸기

분류에서Dev

DataFrame에서 n 개의 문자열 항목 바꾸기

분류에서Dev

문자열에서 n 개의 패턴 바꾸기

분류에서Dev

열 중 하나의 값 유형에 따라 열의 값 바꾸기

분류에서Dev

SSIS의 열에있는 모든 값 바꾸기

Related 관련 기사

뜨겁다태그

보관