在文本文件的每一行末尾(除了最后一行)添加“&& \”。

3

我会尝试在文本文件的每一行末尾添加&& \,但不包括最后一行。

示例输入:

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,很高兴看到您通过代码展示了自己的努力。请在您的问题中添加输入和期望输出的示例,并让我们参与。 - RavinderSingh13
1
你不需要在 && 后面加反斜杠。但是听起来你想要尝试使用 bash -e 来运行脚本。 - tripleee
你想修改文件本身吗? - Shawn
1
如果文件旨在成为一个shell脚本,则在&&后的行末不需要使用“\”。此外,您可以尝试不同的方法(如果它是完整的脚本) - 将shell的“-e”标志设置为在第一个失败的命令之后退出。您可以通过使用sh -e来执行此操作,或者您可以在脚本开头加上set -e - Toby Speight
1个回答

5

对于这么简单的事情,您可以使用sed

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

输出

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

由于我相信是因为转换的原因,它无法正常运行。我正在尝试在Linux中运行Windows文本文件。当我运行您的代码时,出现了以下情况(数字表示行数):第1行;2:&& \;3:第2行;4:&& \;等等…… 有没有什么方法可以避免sed添加新行? - X00145570
1
啊!awksed与Windows文件不太兼容。我会留下我的答案给Linux用户,但如果您喜欢使用Windows工具,也可以考虑使用它们。 - Mark Setchell
哎,我卡了很久哈。awk命令倒是起到了作用,但在最后加了 && \ 符号。 - X00145570
\之后,末尾不应该有空格吗? - Benjamin W.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接