처음 두 필드에 X가 포함된 행 유지

처음 두 필드에 X가 포함된 행 유지

아래와 같이 .csv에서 .txt를 변환했습니다.

Smith","example","example","example","example"
example","Smith","example","example","example"
example","Smith","example","Smith","example"
example","example","example","Smith","example"
John","example","example","example","example"
example","example","example","John","example"

Smith또는 단어가 포함된 행만 유지하고 싶지만 John처음 두 필드 내에 있어야 합니다.

출력은 다음과 같아야 합니다.

Smith","example","example","example","example"
example","Smith","example","example","example"
example","Smith","example","Smith","example"
John","example","example","example","example"

처음 두 필드는 정확히 JohnOR이 아닐 수도 있고 Smith, Johnson예를 들어 여전히 유지하고 싶습니다.

처음 두 필드에 John 또는 Smith가 포함되어 있지 않으면 행을 삭제해야 합니다. 첫 번째 또는 두 번째 필드에 해당 항목이 포함된 경우 행은 그대로 유지되어야 합니다(예: 전체 행에 "John"이 포함된 경우).

답변1

grep -E '^([^,]*,")?(Smith|John)'  <infile

...인쇄됩니다...

Smith","example","example","example","example"
example","Smith","example","example","example"
example","Smith","example","Smith","example"
John","example","example","example","example"

답변2

사용 awk:

< inputfile awk -F, '$1$2~/Smith|John/'

산출:

~/tmp$ cat inputfile
Smith","example","example","example","example"
example","Smith","example","example","example"
example","Smith","example","Smith","example"
example","example","example","Smith","example"
John","example","example","example","example"
example","example","example","John","example"
~/tmp$ < inputfile awk 'BEGIN {FS=","} $1~/Smith|John/||$2~/Smith|John/'
Smith","example","example","example","example"
example","Smith","example","example","example"
example","Smith","example","Smith","example"
John","example","example","example","example"

관련 정보