제목이 모두 쓰여 있다고 생각합니다. 특정 줄을 지우는 한줄을 찾으려고합니다. /는 x 번보다 많게 표시됩니다 (예 : 5).특정 문자가 x 번 이상 나타나는 줄을 지우는 한 줄 짜기
시작 :
/보/BYL/apointe
S/TA/CK/OV/어/플로/w
M/지운/
예상 결과 :
/Bo/byl/apointe
M/oon/
제안 해 주셔서 감사합니다.
제목이 모두 쓰여 있다고 생각합니다. 특정 줄을 지우는 한줄을 찾으려고합니다. /는 x 번보다 많게 표시됩니다 (예 : 5).특정 문자가 x 번 이상 나타나는 줄을 지우는 한 줄 짜기
시작 :
/보/BYL/apointe
S/TA/CK/OV/어/플로/w
M/지운/
예상 결과 :
/Bo/byl/apointe
M/oon/
제안 해 주셔서 감사합니다.
gsub
기능을 awk
으로 사용할 수 있습니다. gsub
반품 건수가 잘못되었습니다. 그래서 이것을 참조로 사용하여 특정 문자의 발생 횟수를 식별 할 수 있습니다.
awk 'gsub(/\//,"&")<5' file
에드 모튼의 제안을 바탕으로 업데이트되었습니다.
감사합니다 Jaypal, 작동합니다! – bobylapointe
@bobylapointe 좋아요. 다행스럽게 도울 수있어! –
이것은 올바른 접근 방식과 거리가 멀습니다 .... gsub()을 수행하는 것이 필요하거나 유용 할지라도 전체 파일 내용을 배열에 저장하고 나중에 인쇄 할 필요가 없습니다 , 당신이 할 일은'awk 'gsub (/ \ //, "&") <5'file'입니다. –
여기서는 sed
으로 충분하다고 생각합니다. //d
을보고 올바른 조건을 제공하는 것이 좋습니다. 나는 더 나은 아이디어가있을 때 뭔가를 시도하고 업데이트하려고합니다.
sed -i /{blah}/d
은 파일에서 변경하기에 충분하지만, -i
없이 실행하고 싶을 수도 있습니다. 처음에는 less
을 통해 배관하여 자신이 생각하는대로하고 있는지 확인하십시오.
이 할 것이다 : 이것은 (GNU가 나오지도) 당신을 위해 작동 할 수
sed -r '/(\/.*){5}\//d' file
:
sed 's|/|&|5;T;d' file
당신이 필요가 :
awk -F/ 'NF<6' file
봐 :
$ cat file
/Bo/byl/apointe
S/ta/ck/ov/er/flo/w
M/oon/
$ awk -F/ 'NF<6' file
/Bo/byl/apointe
M/oon/
+1 나는 항상 간단한 문제에 대한 복잡한 해결책을 찾으려고 노력하고 있습니다. –
@ Jaypal 솔루션은 대개 사용자가 요구 사항에 대해 생각하는 방식에서 비롯됩니다. 포스터는 몇 가지 기준에 따라 선을 제거하고 싶다고 말했지만, 그것이 결과물을 얻고 자하는 것이 아니며, 결과물을 얻으려고 채택하는 과정입니다. 그는 실제로 모든 출력이 6 "/"미만인 파일을 원했습니다. 그는 간단히 말해서 그 해결책이 분명합니다. –
더 이상 동의 할 수 없습니다. 훌륭한 피드백을 남겨 주셔서 감사합니다. 언젠가 나는 거기에 갈 것이다! :) –
이와 같은 문제가 있으면 파일에서 제거 할 내용을 생각하지 말고 대신 파일에서 선택하려는 내용에 대해 생각해보십시오. 그러면 음수를 사용하는 솔루션을 생각해내는 함정에 빠지지 않습니다 또는 두 배 부정!) 논리. 이 경우 단순히 6 "/"미만의 선을 선택하기 만하면됩니다. –