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.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 5640 invoked from network); 26 Sep 2022 08:53:01 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 26 Sep 2022 08:53:01 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1664182381; b=MkbcbO1dlGpAAnmSuovd7kVGSD0TYzDaEsEvtX7FqmGRF7+Et0bN7mJ5luRBba1YjV/1RhF45Q HYRQPLfx0FDhJMiCw0NoeesM9oHbeNMVqR/AVCojc0yl/5M8wSb6GYEAlEicoX8MC7LvWDpPrI dvr3V8KaqEH/moASf8NU0cwV7Rnz37qvTnFfAEak/Tvkw9IlR7/YfKXyXYzmDYoxVygMXHEj2a yFK0Zu7nO7b2DpbsaalgSIrlVG/ZxfXzqMblobmrKA3aXDL1Amp86qXY0P5u+4Jo+yGDfBsAq0 g6MKl8vq3PKqXOkVmHqMnSiV2lBdF1fcsY28p6W5HMOIaQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mout.gmx.net) smtp.remote-ip=212.227.15.15; dkim=pass header.d=gmx.net header.s=badeba3b8450 header.a=rsa-sha256; dmarc=none header.from=gmx.de; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1664182381; bh=gB681TeHVPKNJf8LHq1cKVWu3F9HBcjPyteMiy5Nb+Y=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Transfer-Encoding:In-Reply-To:Content-Type: MIME-Version:References:Reply-To:Message-ID:Subject:To:From:Date: DKIM-Signature:DKIM-Signature; b=HN9vRss3qn6GYBIjc0d20MIvLtvc7Vmb9eXxizDVXSDn0tGsgbdICXeaha3kAqHEjXx6lLY+KQ IAIXon4NqNsyeJckxibqELBwJJ5ogLKEnBWOim8uBRjbw+vmsPFG6NIohNpbT+1KMlHVs5TU60 LtrxIdtSGeuS+ST4F/ZqeswGCYeSeKaMp1I7g7oq+0EnZy/++zERx3KUZd0MI5mNZd3nJEBt51 LA5rmQxwHo+LKfMrlWFr5G+ofbcdrlB/AKO/kNQGAQdfTuoLonKNo1E3a3/shvhgCLinLOVVrF qQ3PRv89UNE/efRSqGn9jHb96KtNdz5fEb6OmbKKFum47g==; 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-Transfer-Encoding:In-Reply-To :Content-Type:MIME-Version:References:Reply-To:Message-ID:Subject:To:From: Date:Cc:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID; bh=aS8/lvj670BUmMLcGyZO8fE53mY4Z5qUy25AG0UsW30=; b=olv2yBRgGIzBZ8iOpatl6D07sY Fm+RJ6q2352NCITG+sJyoWjJZb3EHsFrRiVMAr+5rcLgGbQKTGu+IWI7aht/RwVoKnwdgAVS5wWKC ohkoNjEh7api7N5NYQOZOT0PGGZtzdgzuuNE5SlZwpz8ZkLu+wIJoI82aesfpn+aE8U4WsRWw7H13 YrcmDIMChRG3HEIQIGoJKD91CZY87RMb+EKMIj3VW/NQ7qnhtG8cQ3vhz12xsUIA1DebvRlMcKMrm 5a5bqmOYC5f7gr/yA3oRpGA5EAuu41F/rHs1YauhmnwI0SJ1HKD025ZAT907CR5dSpP0hHH/x9oxt /ES4a4pQ==; Received: from authenticated user by zero.zsh.org with local id 1ocjrH-000Bc9-0f; Mon, 26 Sep 2022 08:52:59 +0000 Authentication-Results: zsh.org; iprev=pass (mout.gmx.net) smtp.remote-ip=212.227.15.15; dkim=pass header.d=gmx.net header.s=badeba3b8450 header.a=rsa-sha256; dmarc=none header.from=gmx.de; arc=none Received: from mout.gmx.net ([212.227.15.15]:36585) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_256_GCM_SHA384:256) id 1ocjpf-000AvN-04; Mon, 26 Sep 2022 08:51:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1664182278; bh=gB681TeHVPKNJf8LHq1cKVWu3F9HBcjPyteMiy5Nb+Y=; h=X-UI-Sender-Class:Date:From:To:Subject:Reply-To:References: In-Reply-To; b=gBE+8RuJIYF7Rs3hvQaAKQt0s2CY+4I9hoY2v6asM0Mbxe8/X5HzsrajhSVbLdsCO LFzuTtP5YesmZpkfQ9TffYrkX8sZLmnXFfPkbZbWzXafe9U+uA5rt7QDyMuWuFfUNA nTKtAahgDZ5IBL1D8iaVDRIsBC2iRCoAt/zaAyuE= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from zitrone.obstwiese ([46.223.163.195]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MQMyZ-1opc1P0Bft-00MI7U for ; Mon, 26 Sep 2022 10:51:18 +0200 Received: from luthien by zitrone.obstwiese with local (Exim 4.94.2) (envelope-from ) id 1ocjpb-0000Uy-CN; Mon, 26 Sep 2022 09:51:15 +0100 Date: Mon, 26 Sep 2022 09:51:15 +0100 From: Dominik Vogt To: zsh-users@zsh.org Subject: Re: Append newline to many files Message-ID: Reply-To: dominik.vogt@gmx.de Mail-Followup-To: zsh-users@zsh.org References: <807cfc5a-78e0-d74f-160c-f68d2c463997@rayninfo.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <807cfc5a-78e0-d74f-160c-f68d2c463997@rayninfo.co.uk> X-Provags-ID: V03:K1:wn5VwLzMveflOYoLO+04qIsmyGRI55ca0Nh42jLNizxaR0HKn5W 43P96qd5MxsLLBG72KiiMqqGyz647Kl+FqzVQj9y/TGIHj9y+cnDtAzR5NXa7mD9bNl8f6k dUQAiKWHVaRzEl5M9vkuzh/p+X4duxi1/rlsQbGCubJW053I/47StxGkMAyR9uw9XkwipYf ZtwxSdxQS+Swk3s7NdVzw== X-UI-Out-Filterresults: notjunk:1;V03:K0:8MIesLqqesk=:3o0SdP2mKvCuZE8789oiWt 4f5TdrrTaL5jd9BW7+wgEIcQoFULuVETkZvMExu6yOsGeVoslO8QIR1+8ayWwva5uY5QvouNN N/gUydma5i8tqs3uNRX7QEkk3c5mDlO6j3YZ9nWcze2U4VtA1hvbKbTxt/VS0LlAJJDpQgKg3 Ed/E0i44vFICOYTo7fwA0AmMDhdSSDxjoUibUKB5UxFwJz/mqXbGwtM+P96JWQ+yfrpwA9cWk a3dgpCdQAiO62J0IqjBD+Qmc7/7K7c6xXGG7y6GAv3F+YNaGDmpyFbMtTWh6PjSG+V4suF6C3 9v4sUNqnrOOnKBOuvzeh9AKZ0WGpx1RAommDPkJxIJuan97nfrRbGHCCyTyu0TmVHu43EtsnV SaQZzzseNSS89VYaLa9ME+OJOMq1woaa7t5tmUyA6Z92orYUP7bPiSH8hwRtf5JhvkeTkIylZ yV3liRGvTR5BKhVY1B5D5iXuPSuhAOkn9riZNX1gtMDy5s45oYCTFVpgBDxza/4U27rRpEgMK xHXDI2bEpbWGgnA/n5tOylcCwQOmMfcg+lgNDbzQYl6XClsoX3MVO46UxZeStdSSiSgHYB3jm rwAB6ifXc3E59m+ITFd23tHAzRTB6cIJ0YiFSnAoeaIeQURN6eIPr7/q95P1YkP3DYreEh2l5 qlXYgtxZUZk2iG98+Zwi1LZijbq05/vabozZR+Z7QRPnSBQs5lcX/nJDh/Hho4fLu8W4c8twQ EUF24Zk17NBWVU7S5ybo4p5BqDcYGJdeV/7VytO9DZIHBWYSNYVqvdKLS+ls0YrSwqVZfwSCj t2QlXUArElhjdr9FXLsDDTY+6cs8BlhqhMhmmaJZfZImXUHaJsmy9C7pJoyBRoQmX1Kvnk81e EGLlxk25KRdSpby0dNwLwLySRgxBmx+qZMAlEbyjPR9/EKPUzjux5+AXzjWfJuY7Xm5K4wJWA bfHbXDem7kHyAJ0dsJjdNcETzCAOeGvrHhjIIbedZ8kT+9QF9SocvsMD4DoqUuNJjvxCgid60 C1PAU2XHKrdcUu9gzFhB3QMxyxIOrSEoRdcJ/DgML2mfov2f6XDjZU3tNyhISBgnnVKyltZtC 8u/WEvg1jMdiAQf2MjETOoU+yS8fssNtsO5IvKwiDUOHBuOFMlHOVc02MSMpHnMFBF7znUpb3 WXl5njl4x3dKXDuyBuI1syAhTv Content-Transfer-Encoding: quoted-printable X-Seq: 28142 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 Mon, Sep 26, 2022 at 09:11:04AM +0100, zzapper wrote: > > On 25/09/2022 14:30, Roman Perepelitsa wrote: > > On Sun, Sep 25, 2022 at 3:21 PM Dominik Vogt wro= te: > > > Assume there are thousands of text files that are not terminated > > > with a newline. I want to concatenate them all, but add the > > > missing newline between files. > > > > > > This works but takes ten times as much time as "cat foo.*". > > > > > > for i in foo.*; do cat "$i"; echo; done > out > > > > > > I can't really think of a fast yet simple solution. > > This should work: > > > > print >lf > > files=3D(foo.*) > > lf=3D(lf) > > cat -- ${files:^^lf} > > rm lf > > > This looks interesting but any chance of an explanation of how it works = for > us lesser mortals please? It first generates a file "lf" that contains only a newline and stores the filename in an array "lf", and the names of the files in question in an array "files". "${files:^^lf}" merges the two arrays in an interleaving fashion. The result is file.1 lf file.2 lf file.3 lf ... (The shorter array is repeated up to the other one's length). Quite clever solution, but a bit complicated. =2D- This one works too and is simple and fast: $ sed -e '$s/$/\n/' -e foo.* ^^^ | Replacement is done only on the last line Ciao Dominik ^_^ ^_^ =2D- Dominik Vogt