我正在阅读包含以下数据的文件名:
2017-03-23
2018-01-23
2017-07-31
我想读取每一行并将连字符替换为空格。根据上面的示例,我应该得到以下内容:
2017 03 23
2018 01 23
2017 07 31
下面是我的代码:
#!/bin/sh
filename=extract_dates.dat
line=1
totline=`wc -l < $filename`
while [ $line -le $totline ]
do
date=`sed -n -e ''"$line"'p' $filename | awk '{print $line}'`
echo $date
test=`sed 's/([0-9])-([0-9])/\1\2/g' $date`
echo $test
line=`expr $line + 1`
done
出现以下错误:
sed: 1: "s/([0-9])-([0-9])/\1\2/g": \1 not defined in the RE
4条答案
按热度按时间cl25kdpy1#
tr将用空格替换连字符,例如:
kxe2p93d2#
您不需要显式计数器或
sed
或awk
;bash
本身可以处理这个问题(尤其是使用awk
,实际上什么也做不了)。a5g8bdjr3#
我们可以使用bash的字符串替换
产出
woobm2wo4#
不如这样:
如果你想使用
sed
,你也可以使用它。你的sed
命令不起作用的原因是你需要转义你的括号。试试这个: