use*_*970 9 sed io-redirection cat
我有这个cat然后sed操作:
cat ${location_x}/file_1 > ${location_y}/file2
sed -i "s/0/1/g" /${location_y}/file2
Run Code Online (Sandbox Code Playgroud)
这可以在一行中完成吗?
我可能会错过这样的方式在这里,但这个解释在我看来,解决的是相反的,我不能太团结以上cat,并sed为一个操作,而双号(&&)或分号(;),并越来越接近假设它是不可能的,但在这里问对我来说很重要,因为我可能是错的。
并非所有讲英语的读者都熟悉术语“&符号”或“分号”,因此我详细说明了这些。
Kus*_*nda 22
是的:
sed 's/0/1/g' "$location_x/file_1" >"$location_y/file2"
Run Code Online (Sandbox Code Playgroud)
您的代码首先复制第一个文件,然后使用sed -i. 上面的代码从原始文件中读取,进行更改,并将结果写入新文件。这里没有必要cat。
如果您使用的是 GNUsed并且$location_x可能包含前导-,则需要确保路径不被解释为命令行标志:
sed -e 's/0/1/g' -- "$location_x/file_1" >"$location_y/file2"
Run Code Online (Sandbox Code Playgroud)
双破折号标志着命令行选项的结束。另一种方法是使用<将文件内容重定向到sed. 其他sed实现 (BSD sed) 在第一个非选项参数处停止解析命令行选项,而 GNU sed(像其他一些 GNU 软件一样)在解析命令行时重新排列命令行。
对于此特定编辑操作(将所有零更改为 1),以下操作也将起作用:
tr '0' '1' <"$location_x/file_1" >"$location_y/file2"
Run Code Online (Sandbox Code Playgroud)
请注意,tr始终从标准输入读取,因此<从原始文件重定向输入。
我注意到在您的sed命令行上,您尝试访问/${location_y}/file2,这与其上方行上的路径(/路径开头)不同。这可能是一个错字。
| 归档时间: |
|
| 查看次数: |
20811 次 |
| 最近记录: |