regex - 使用 bash 将连字符替换为空格
问题描述
我正在读取包含以下数据的文件名:
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
解决方案
tr 将用空格替换连字符,例如:
test=$(echo $date | tr "-" " ")
推荐阅读
- square-connect - 需要帮助使用 Square API 设置和销售剧院门票
- javascript - 如何在html表单中自动填充输入字段
- ios - 在 iOS 中分析文本到语音的字符串
- android - FragmentHostCallback 是在哪里创建的?
- c++ - 无法访问静态函数内部的私有变量
- reactjs - 将jsx文件转换为tsx后Reactjs“错误:ENOENT:没有这样的文件或目录,打开..”
- python-3.x - 如何将一个盒子形状的图层添加到 altair 图中?
- c# - 在 Asp.Net MVC 中执行原始 SqlQuery
- c# - EntityFunction.DiffDays 原因 此函数只能从 LINQ to Entities 调用
- c++ - wxWidgets 是否有与 Qt 的 QWebChannel 等价的功能?