첫 번째 열의 정확한 숫자가 awk/sed와 일치하면 행 저장

첫 번째 열의 정확한 숫자가 awk/sed와 일치하면 행 저장

그래서 내 입력은 다음과 같습니다.

1,somerandomwordsx,some.random.words,random.numbers.word,random
2,somerandoms,random,randomnumber,
1,randomwords,word1,word2,word3
21,randomwords,words.random,unique.word,more.random.words
111,randomword1,random.word2

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

1,somerandomwordsx,some.random.words,random.numbers.word,random
1,randomwords,word1,word2,word3

awk, grep, sed로 많은 것을 시도했지만 쉼표를 무시하거나 "111"을 포함한 모든 "1" 일치 항목을 포함합니다. 첫 번째 열에 정확한 숫자 1이 있는 행만 저장해야 합니다. .

도와 주셔서 감사합니다!

답변1

사용 awk:

$ awk -F , '$1 == 1' file
1,somerandomwordsx,some.random.words,random.numbers.word,random
1,randomwords,word1,word2,word3

awk각 행을 쉼표로 구분된 필드 집합으로 읽을 수 있습니다 . 위의 코드는 $1첫 번째 필드( )가 있는 모든 줄을 인쇄합니다 1.

사용 sed:

$ sed '/^1,/!d' file
1,somerandomwordsx,some.random.words,random.numbers.word,random
1,randomwords,word1,word2,word3
$ sed -n '/^1,/p' file
1,somerandomwordsx,some.random.words,random.numbers.word,random
1,randomwords,word1,word2,word3

사용 grep:

$ grep '^1,' file
1,somerandomwordsx,some.random.words,random.numbers.word,random
1,randomwords,word1,word2,word3

with sed및 를 사용하면 " 줄 시작 부분에 문자가 있고 그 뒤에 쉼표가 옵니다"를 grep의미하는 정규식을 사용할 수 있습니다 . 표현식을 줄의 시작 부분에 고정 하고 뒤에 쉼표를 일치시킴으로써 또는 등으로 시작하는 줄이 일치하는 것을 피할 수 있습니다 .^1,1^11112

첫 번째 sed변형은 패턴과 일치하지 않는 모든 줄을 삭제하는 반면, 다른 변형은 패턴과 일치하는 줄만 인쇄합니다. 효과는 동일합니다.

관련 정보