相关疑难解决方法(0)

shell:在命令替换中保持尾随换行符 ('\n')

我希望能够捕获命令替换的确切输出,包括尾随的换行符

我意识到默认情况下它们会被剥离,因此可能需要进行一些操作才能保留它们,并且我想保留原始退出代码

例如,给定一个带有可变数量的尾随换行符和退出代码的命令:

f(){ for i in $(seq "$((RANDOM % 3))"); do echo; done; return $((RANDOM % 256));}
export -f f
Run Code Online (Sandbox Code Playgroud)

我想运行类似的东西:

exact_output f
Run Code Online (Sandbox Code Playgroud)

并有输出:

Output: $'\n\n'
Exit: 5
Run Code Online (Sandbox Code Playgroud)

我对bashPOSIX 和 POSIX都感兴趣sh

shell bash

17
推荐指数
2
解决办法
3342
查看次数

如果字符串包含换行符的 C Shell 脚本条件

我不确定如何使用csh字符串匹配语法来表达这一点。我想测试一个 csh 变量是否包含换行符。我基本上在寻找:

if ($mystr !~ <pattern for strings which contain a newline character>)
Run Code Online (Sandbox Code Playgroud)

编辑:在我的特殊情况下,我正在尝试制作这样的字符串:

1234ABC
Run Code Online (Sandbox Code Playgroud)

像这样的字符串失败:

1234ABC
 -------
FOOBAR
Run Code Online (Sandbox Code Playgroud)

这些是sed命令的输出,即sed '1d;$d'. 不确定这是否重要。

我试图检测换行符而不是" -------"为了防止我正在解析的文件格式发生变化的原因。(无论如何,我认为我对文件所做的事情并不重要,因为我只是在寻找检测换行符的通用解决方案。)

string csh

3
推荐指数
1
解决办法
1万
查看次数

tcsh 脚本 - 保留 grep 结果的换行符

我正在 tcsh 中编写一个简单的脚本(显然这是一个坏主意,但很好)来从文本文件中 grep 一些模式。假设我们有一个文件animal_names.txt,其中包含:

dog carrot
dog bolt
cat larry
cat brownies
bird parry
bird pirate
Run Code Online (Sandbox Code Playgroud)

我写了脚本:

set animals = "dog\|cat"
set names = `grep $animals animal_names.txt`
echo "$names"
Run Code Online (Sandbox Code Playgroud)

目的是用“dog”或“cat”来grep所有行。但是,我得到的输出只是一行:

dog carrot dog bolt cat larry cat brownies
Run Code Online (Sandbox Code Playgroud)

不知何故,换行符在输出中被删除。有没有办法保留换行符?另一篇文章建议使用 :q 修饰符,但它在我的情况下不起作用。

grep tcsh

2
推荐指数
1
解决办法
660
查看次数

标签 统计

bash ×1

csh ×1

grep ×1

shell ×1

string ×1

tcsh ×1