sed,别名和引号问题

时间:2013-09-12 17:44:51

标签: shell sed alias

我是shell编程新手

我有一个命令sed -i '$d' ~/.bash_history,它可以正常工作。我希望别名它,所以我把它写成

alias rh='sed -i "$d" ~/.bash_history'

当我执行rh时,它会毫无错误地执行,但不会删除文件中的任何内容。我觉得它与引号有关。

我做错了什么?

3 个答案:

答案 0 :(得分:6)

Bash计算“$ d”的值,如果未定义$ d,则将其替换为“”。 试试这个:

alias rh='sed -i '\''$d'\'' ~/.bash_history'

答案 1 :(得分:2)

使用函数可以简化引用:

rh () { sed -i '$d' ~/.bash_history; }

答案 2 :(得分:1)

在我的情况下,我必须实现相当于以下的混合解决方案:

package aminur.test.formatters;  

import java.text.DecimalFormat;  
import java.text.DecimalFormatSymbols;  
import java.text.ParseException;  

public class ThreadSafePriceFormatter {  
  // the price formats  
  private static final ThreadLocal<DecimalFormat> pointSeparatedFormat = new         ThreadLocal<DecimalFormat>() {  
    @Override  
    protected DecimalFormat initialValue() {  
        DecimalFormatSymbols symbols = new DecimalFormatSymbols();  
        symbols.setDecimalSeparator('.');  
        return (new DecimalFormat("#0.00", symbols));  
    }  
};  
private ThreadSafePriceFormatter() {  
}  
public static String formatPointSeparated(double price) {  
    return pointSeparatedFormat.get().format(price);  
}  
public static Number parsePointSeparated(String price)  
        throws ParseException {  
    return pointSeparatedFormat.get().parse(price);  
 }  
}