我尝试用新的子字符串替换stdin中的某个子字符串。在cat
读取多个文件后,我必须从管道中获取标准输入。然后我想将更改后的字符串向前推送到管道。
这是我尝试做的事情:
cat file1 file2 | echo ${#(cat)/@path_to_file/'path//to//file'} | ... | ... | ... | ...
我尝试用替换子字符串@path_to_file
替换子字符串'path/to/file'
(周围的引号是替换子字符串的一部分)。
然而,bash给了我一条错误消息:bad substitution
我有什么想法可以做到这一点?
答案 0 :(得分:6)
您可以使用命令sed。
cat file1 file2 | sed -e 's/@path_to_file/path/to/file/' ...
答案 1 :(得分:1)
使用参数扩展:
cat file1 file2 | while read -r line; do echo "${line/@path_to_file/path\/to\/file}"; done