【问题标题】:adding && \ to each line on a text file except last line将 && \ 添加到文本文件的每一行,除了最后一行
【发布时间】:2021-01-22 00:48:09
【问题描述】:

我试图在除最后一行之外的文本文件的每一行末尾添加&& \

示例输入:

ps 
mkdir repo 
cd repo/ 
touch file1.txt 

预期输出:

ps && \
mkdir repo && \
cd repo/ && \
touch file1.txt 

第一次尝试

我试过这个,但它在每一行输出&& \包括最后一行

awk '{print $0"&& \\"}' RS="\r*\n\r*"

第二次尝试

我尝试使用 sed:

sed '1s/^//;$!s/$/"&&" \\/;$s/$//'

这似乎添加了额外的换行符:

 ps
 && \
mkdir repo
 && \
cd repo/
 && \
touch file1.txt

【问题讨论】:

  • 欢迎来到 SO,很高兴您以代码的形式向我们展示了您的努力。请在您的问题中添加输入和预期输出的样本,然后让我们进入
  • && 后面不需要反斜杠。但听起来你想发现 bash -e 来运行脚本。
  • 您想修改文件本身吗?
  • 如果文件是一个shell脚本,你不需要\ 紧跟在&&之后的行尾。此外,您可以尝试不同的方法(如果它是完整的脚本) - 将 shell 的 -e 标志设置为在第一个失败的命令后退出。您可以通过使用sh -e 执行此操作,或者您可以在脚本开头添加set -e

标签: bash awk sed


【解决方案1】:

你可以使用sed 来做一些简单的事情:

printf "line 1\nLine 2\nLine 3\n" | sed '$ ! s/$/ \&\& \\ /'

输出

line 1 && \ 
Line 2 && \ 
Line 3

【讨论】:

  • 我相信由于转换,它无法正常工作。试图在 linux 中运行 windows txt 文件。当我运行您的代码时,它就像(数字表示行)1:第 1 行; 2 : && \ ; 3:第2行; 4: && \ ;还有更多...有没有办法避免 sed 添加新行?
  • 呃! awksed 不是 Windows 文件的好伙伴。我将把我的答案留给 Linux 用户,但如果你愿意的话,也许可以考虑使用 Windows 工具。
  • 是啊,卡了很久哈。 awk 完成了一项工作,但在结尾添加了 && \ 哈哈。
  • \后面不应该没有空格吗?
猜你喜欢
  • 2011-04-09
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 2023-02-10
相关资源
最近更新 更多