我正在尝试编写一个接收文件的shell脚本(例如file_1_2.txt)并替换任何" _"用"。"(例如file.1.2.txt)。这就是我所拥有的,但是当我运行它时它给我一个空白的输出。
read $var
x= `echo $var | sed 's/\./_/g'`
echo $x
我试图将更改后的文件名存储在变量" x"然后将x输出到控制台。
我通过编写
来调用此脚本./script2.sh < file_1_2.txt
答案 0 :(得分:1)
有两个问题。首先,您的代码有一些错误:
read var
x=`echo $var | sed 's/_/\./g'`
echo $x
会奏效。你在$
中有一个额外的read var
,一个太多的空间(如前所述),你在sed中混合了替换模式(它与你想要的相反)。
此外,如果您想要在文件名中替换_
{/ 1}}
.
如果您使用echo "file_1_2.txt" | ./script2.sh
,则会在您的脚本中读取“file_1_2.txt”的内容。
答案 1 :(得分:1)
另一种解决方案,仅限bash:
var sortedList = listStr.OrderBy(x => int.Parse(x));
var desList = listStr.OrderByDescending(x => int.Parse(x));
(有关详细信息,请参阅bash手册页中的“参数扩展”部分)
您也可以使用$ x=file_1_2.txt; echo "${x//_/.}"
file.1.2.txt
:
rename
答案 2 :(得分:0)
由于bash支持变量替换,因此不需要string_two_points(string type, point & xc):type(type), x(), y() {
x=xc;
};
:
x=xc;
如果您对结果感到满意,请删除sed
。