我试图用一个新的子字符串替换stdin中的特定子字符串。我必须从管道中获取stdin,在使用
这是我的尝试:
然而,Bash会给我一个错误消息:
有什么方法可以解决这个问题吗?
cat
读取多个文件后。然后,我想将更改后的字符串推到管道中。这是我的尝试:
cat file1 file2 | echo ${#(cat)/@path_to_file/'path//to//file'} | ... | ... | ... | ...
我试图用替换子字符串'path/to/file'
(引号包括在内)替换子字符串@path_to_file
。然而,Bash会给我一个错误消息:
bad substitution
。有什么方法可以解决这个问题吗?
sed
?还是我在你的问题中漏掉了什么? - Martin Tournoijcat
无法捕获标准输入并替换它。 - Cyrus$(cat)
从标准输入(stdin)读取所有内容,并写入标准输出(stdout)。例如:echo 123 | printf "%0.8d" $(cat)
,printf本身不从stdin读取。${#(cat)/foo/bar}
是不正确的语法。正确但不从stdin读取的是${a/foo/bar}
,用于将$a中的第一个foo替换为bar。请参见“参数扩展”:man bash
。 - Cyrus