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 17944 invoked from network); 26 Sep 2022 19:40:30 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 26 Sep 2022 19:40:30 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1664221230; b=Wa0I2UzD/5B54sa3N7+FnsR6lfpC+1E+Ytyu+Y2pWLrVlHvQ1hdROefp+Rz2p+WXKYIqdbBJ+V kJSuGPdI7a1PKJcBa8/sHIQZYkSgwbhl7hTm1nHQkbjiABPMWOWBtI2c0lZGf4zffjMT1n5kfm G7GdsHYG9xRgvVQRC6Hg9lReTm8y3FXpA5ebs81lKrxNZCEL/Jw2yD7NMs8w+lJ53j1ogolVav swKgZpvsI5UmMt6/QBnwL+dJZcyEbBugIbhCsjpZXBEVUzYlPuzpg/meF8WkoDH3iWpy9L2wz8 dc9n+OBTetRMopPyJ2aKBLUnbOMtyEhwJLePNVwvGI5Yxw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ed1-f53.google.com) smtp.remote-ip=209.85.208.53; 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=1664221230; bh=Oi2kaHluCMuJyWKmNgFLpK4adm3NWKSvgCCYs2Z1mqM=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:References: In-Reply-To:MIME-Version:DKIM-Signature:DKIM-Signature; b=kSnmXcxA/7kaj/ONsSjW6RB4NYiqkTYsV+Cnkq0rO4AUk8foBcYydFH0a1skTPdnMJ9S/wSQXr WNbvNYTnI3FHSXiRGalmaSuUB4KfAPdE9smyA9Qs+USxxlNwLEJgoM/cxSAruBp/WnOqZtm6oA 8fr9hxZjxTXdXpScVXLd53YEk0GVpoNfKQXbuuVigl9XsRvMsPlAbovDPQx1T6z9up3s+2FXCZ 4Wbhvlo+5kJdHNajNcuYIjTNhJSfv2z/sIZ4SD4Ybx13/uxhh7jTzbS1eIdZg/yPyzMPT4hyGi exMCFjMJesrvbBRw58G0euG+tO2dhtDbwvUoL1wk5kEfpQ==; 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:To:Subject:Message-ID: Date:From:References:In-Reply-To:MIME-Version:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=XOqgklrMetlGXdD5FDHQyK5H9pHdgDgAr4qn3CcXsRY=; b=UmCMLbKGZGXvKZYDZBl6a7UyP9 5qqHzRUC2t43xRdJbEPF3zk+wJ9avNih2FQIxlQ2nZFCRbnp2LBr09QZqNx0VMQfgv9PPqjeM/tJ3 X2NyMFjGUIwYeWdDZ6X2S0pERDKdIm6xkGiRcE2RELP3Puk8wKIQ2TU8zE3tMd0ZsFySpSf43RJJG CrMSq8V0jPkfLMuSJtEwPWJpQE1yaUVGwp7YJIo2830LcYWr6T1oiKaLCBon5z0oEqohHSCfevM1F OlKUqbevC5TK3I4XnGI05Dhgh/Y8knm/BSGlZItOTt9m+QZp2hgr3mrEWpT7+Nv9I6VgF0QEbguRW fZ3yvoPA==; Received: from authenticated user by zero.zsh.org with local id 1octxu-0006eb-6F; Mon, 26 Sep 2022 19:40:30 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ed1-f53.google.com) smtp.remote-ip=209.85.208.53; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-ed1-f53.google.com ([209.85.208.53]:33685) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1octwy-0005xn-5F; Mon, 26 Sep 2022 19:39:32 +0000 Received: by mail-ed1-f53.google.com with SMTP id b35so10539482edf.0 for ; Mon, 26 Sep 2022 12:39:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :from:to:cc:subject:date; bh=XOqgklrMetlGXdD5FDHQyK5H9pHdgDgAr4qn3CcXsRY=; b=jvUJWac1R1Ghes148N5Vr8IHVm2zaXNpqo2pTLuTOlsElQ29qirESEGKnRTKRoBq6P xSXKL+3XbmnrCh6jQuWL+d0ZLQCU8mYfo6dMhtZpk4Ac6ePLzi2Y9g1R0VwKkCr8RUmu JluKohUmDQ8PBro4Bp522TtFlxuCSPB1J1RglEkBMhdUJNRFMir/4eWDpeBYCO3lla8R Rbv8OxuR+RUzi/AtWL0vBVXIAv7hXmU6yHHh6HjyII6pd4TenIOXfZR7jNbuGrwaS37s FmU5sYVUZPLm+BEfjOCFe2wi5qWKu1cBiHLAnmh1HcpZGylt55GtRVxh8aCfL6OefJlg CCzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :x-gm-message-state:from:to:cc:subject:date; bh=XOqgklrMetlGXdD5FDHQyK5H9pHdgDgAr4qn3CcXsRY=; b=H9dEijPUwv/Wj6z9lZlLQCrNK2FYqk8A+DlvRQ3RwqTrTS2H7TfaIC1fIDRmH6xmiB a/++HsBhIFiTMw52Mu+CD+Z5B7b/O4j+C3CnQKLjo2IJq8AHDCB6iW6joAYtAT6GbFzS gdA83jHcKJkxhJ3XqlXNuOpnUtpj1bFL8UCszgYWSnz3T9597KbatWDFRlFH/KKrgkTB 5kd/RfUa3bc32ToS0f/+dPC7JhFzwzL5OcAfITkR+5+Z9PaE3XYc5CHxP8KcjwQ+p4QI sJg8EL5JXML3cIG5iVg97qT3tF9Kmq0YHn4Qxzz3Gx4txfgeP2tJNvRfG7b7bKjTrMJf bZnA== X-Gm-Message-State: ACrzQf3V7SSvCn7eYhJsnn8YKpzXLet/d5Tal1lPs0iDFAS4XLIAKXEH SXSmxfkyX0SsgK0xznt1cbnfkCBjHXLWncn1/dYMblOS X-Google-Smtp-Source: AMsMyM6smwsRsWdxzStp36jLT5FWryIrUAN+CVi3rMIgoBmv5HKyA83+gUBtYdR67wBWLWrCaINcVQrTvbGz9iZEf6M= X-Received: by 2002:a05:6402:40cb:b0:451:2b71:9940 with SMTP id z11-20020a05640240cb00b004512b719940mr24487516edb.237.1664221171700; Mon, 26 Sep 2022 12:39:31 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a05:6f02:625:b0:25:7ad:7298 with HTTP; Mon, 26 Sep 2022 12:39:31 -0700 (PDT) In-Reply-To: References: <807cfc5a-78e0-d74f-160c-f68d2c463997@rayninfo.co.uk> From: Mikael Magnusson Date: Mon, 26 Sep 2022 21:39:31 +0200 Message-ID: Subject: Re: Append newline to many files To: zsh-users@zsh.org Content-Type: text/plain; charset="UTF-8" X-Seq: 28147 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 9/26/22, Dominik Vogt wrote: > 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 >> > wrote: >> > > 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=(foo.*) >> > lf=(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. And here's a oneliner version, () { cat -- ${@[2,-1]:^^1} } =(echo) foo.* -- Mikael Magnusson