아래와 같이 .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"
처음 두 필드는 정확히 John
OR이 아닐 수도 있고 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"