From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 13607 invoked from network); 20 Jan 2022 10:32:33 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 20 Jan 2022 10:32:33 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1642674753; b=KZv6SbcvcchDXihMafUjMNRRDRsRCukfepkS+OlztQlXhWnbPiMMt0AHr33hmi/P0LsqgjpSFh BIT0xw8d9X3TaBCLj6LGZ/IMNN6LvEI1000ppCUX655PUbE8tqSLmqPeAtVsic78ggK17ic0QJ AtKMryiadp2UFVp2f8M5Vt7gJtKAoSej/AaV/LDAPqmwmWioR+2nkPbI8ogTJNTErTZHxDOl8W p+d1bCk9YtMlCuWruNcCZUKnE7mfjCRQ5FpkIeqOwtc6YfCNcoz/aw9Y7XviVFHoeI3AhJd1GJ fmpKExqXHMxYGpZSWW66NM0c4Qp+ox3iF71vjFgSCOjbhw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-vk1-f179.google.com) smtp.remote-ip=209.85.221.179; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1642674753; bh=LqVlJEmyl4oZhTGfEgSdjPsFGZSNGq7RHIBo2Bcjm2c=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:References: In-Reply-To:MIME-Version:DKIM-Signature:DKIM-Signature; b=F28GLOXy1LGcxeJLJxFQ6v+hfcaCfW7+VaXYUCk9lHn0Kg9nH12YorKrdR7Xx+0z3GuuVTrW+h d6pE8iEnc59Xmi4/7ZFckmFYzGeCaW4UAFWJkgEXIdYzAYc6uytyfUGwgOrUvo8whTLbEQXW5r PqRqY0T9xM4NxljeaG3MFZmNQI5s0O/XDVKZArnjD0y6Kao6MAJqpkIUxkNqp7awpCEbctVb/c zwwgjHA7ACSca8ZNt5Vh2+46YaHZYUXwPBi8j1eRjwt8glv7h6EU4kiW1QcXtkLs7/ZnBs48US 5b+ruSgd0g3ehq+RQOxhCftViR6k3XHJUdmIbVQ8ovQidw==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:References:In-Reply-To:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=url0Qto6xD6Z/s1QZIVG6QURJ+sVzYsTExV94nPM22k=; b=f0EG2U/u3OypIUhx/YBHoGaWlp 91ms1lzXjAsLn0lc3MRHcPSjF/t4f9UytSrOEW3ypi0CQBjIEmd1pFWqVo8EOHOs7islAXDDK/qBv ckKqdvkFW5xDpfN8URUQgBITpXGXXrtBtA5tHnaom0pFBRxA/Lo0QgySzOkxShZYDSvkwXhc9yx78 0qjZ3TuMxrevDhq7pChxPOnCtiOncsMf4pR8Nb666WyBkwPzRJjzi5szoJxtMr7o1m8vmX1DmuR3d n3moCrV/QTGcNZcMbkgaxekRa4sk2Nm1cazTgrO41ZcfXRLWBDvx2UIehUXuSyNytub9yC2gsf6mJ GunYkVcQ==; Received: from authenticated user by zero.zsh.org with local id 1nAUk3-00027R-AO; Thu, 20 Jan 2022 10:32:31 +0000 Authentication-Results: zsh.org; iprev=pass (mail-vk1-f179.google.com) smtp.remote-ip=209.85.221.179; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-vk1-f179.google.com ([209.85.221.179]:41979) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1nAUjB-0001PY-It; Thu, 20 Jan 2022 10:31:38 +0000 Received: by mail-vk1-f179.google.com with SMTP id n9so3290332vkq.8 for ; Thu, 20 Jan 2022 02:31:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=url0Qto6xD6Z/s1QZIVG6QURJ+sVzYsTExV94nPM22k=; b=AkGF/t6cFMiUZDIo0+Rt0nyxAMzgdg0hWuxzsoMN5UuflIKMUSojrMh6LhAdenQRUz 9OGXUHY7WasdH1D3C4GMTG4iaAxTuFfK00piOL/tbBo8oRoYt2YTOuMCpOWOX86w1+S6 PrPoWHamlCQToYGRWn2WK6/gofKgO6na5xE5zKlQ6dtXniywzfdM+HJ13KWddtd5mV20 KJav0r94P+KoVSDe3ZtTMMR/hxpbugROH5Ez204zJV4ZAQKXQ4DtkywdGoyyqI70HNps L9KvQnSDfaxvhgVikb1jC2WC7OBP86hs8DIzxdUQvUp3+kB8rAN1S6R0KDiw7V4XzwSa nisg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=url0Qto6xD6Z/s1QZIVG6QURJ+sVzYsTExV94nPM22k=; b=TmMZ8mwwEXY6MolIGiOUYllYuvu0ZY2muBB0bKT1e6kNlFLQbyb1xHnteRLlSVCbbc Ws/6ntlLuE3eB2voMQ8FzhB0LcoRVM6NNios4DLqAT/IDOmhDng7H9bQqokS6iyGLQy9 IvMN3MNG1IS6ycMfj5HxlhHZzvoV4D3KKgabBmqlGnTbGdHFfZSNVgLKJMjsETRf88FH ELxyMay6gMlVPw93rlrSY4bQfaLVIIZvqzaAR8ovEcIlFhNOGj886ATkL385XP/ZlNDp kY45UAvhONrEJFcLb8bov4AVJ9rPciQtt2Y/6d5cQFC0R5D8EZcm24/ERPW/D5W1QcAv Kpmw== X-Gm-Message-State: AOAM532SIdOfLCIhuO9EFtBhUxRrMz+Lf1FQHVVVyUQlmQvx4cvYyZtz WYAzwFaFIIAOaGVVnMj6TgE1WrXGwbRtTUdbeZM= X-Google-Smtp-Source: ABdhPJxRk2/Tb57K+fYq97fSdWsHqOpAsGgzC/8bu05mPX7CIJyNVVh8SfOn5VHEBrmV+QnHbOGIzKAaSjh7bJyXFiU= X-Received: by 2002:a1f:1609:: with SMTP id 9mr13902254vkw.18.1642674696323; Thu, 20 Jan 2022 02:31:36 -0800 (PST) MIME-Version: 1.0 Received: by 2002:ab0:2551:0:0:0:0:0 with HTTP; Thu, 20 Jan 2022 02:31:35 -0800 (PST) In-Reply-To: References: <2e3d8557-9f6f-5d17-7517-7f9fcf7be1ce@rayninfo.co.uk> From: Mikael Magnusson Date: Thu, 20 Jan 2022 11:31:35 +0100 Message-ID: Subject: Re: zsh-ify a bash script To: Bart Schaefer Cc: zzapper , Zsh-Users List Content-Type: text/plain; charset="UTF-8" X-Seq: 27479 Archived-At: X-Loop: zsh-users@zsh.org Errors-To: zsh-users-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-users-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: On 1/20/22, Bart Schaefer wrote: > On Wed, Jan 19, 2022 at 12:57 PM zzapper wrote: >> >> Dumb CLI trick. Wanted to find files containing all of several terms >> (dup2, pledge, socketpair, fork), but they could occur anywhere in the >> file: > > Not zsh any more than the first example, but instead of "grep -l" on > the entire file contents for each term ... > > # start by getting the actual occurrences of all the terms: > find . -name '*.c' | xargs egrep > '\<(dup2|pledge|fork|socketpair.*SOCK_STREAM)\>' /dev/null | > # reduce the results to just file names and search terms: > sed -E 's/(^[^:]*\.c:).*\<(dup2|pledge|fork|socketpair)\>.*/\1\2/' | > # make every search term unique per file: > sort -u | > # discard the search terms, leaving only file names: > cut -d : -f 1 | > # count the number of times each file name appears: > uniq -c | > # print names with a count of 4 (the number of search terms): > sed -nE 's/^ *4 //p' > > Adjusting this for edge cases where two search terms appear on the > same line is left as an exercise. This part would probably be fixed by passing -o to grep (didn't test in the above but): % echo foobar|grep -E '(foo|bar)' foobar % echo foobar|grep -oE '(foo|bar)' foo bar (sorry to spoil the exercise) > If you have file names with colons > in them, the first set of parens in the first sed will need a more > precise RE. -- Mikael Magnusson