我正在编辑一个文件,其中我必须用空格替换第2列的连字符。我尝试使用gsub,但无法显示结果
awk '{gsub(/\"|\-/,"",$2)}1' events
输入文件
xxxxx 2019-04-03 19:40:51.310 1.7615 31.1994 10
xxxxx 2019-04-02 01:22:48.140 -7.2965 114.5721 35
xxxxx 2019-04-01 23:05:28.610 -7.2121 114.537 21
预期结果应该是
xxxxx 2019 04 03 19:40:51.310 1.7615 31.1994 10
xxxxx 2019 04 02 01:22:48.140 -7.2965 114.5721 35
xxxxx 2019 04 01 23:05:28.610 -7.2121 114.537 21
答案 0 :(得分:1)
您可以仅使用以下awk
命令,在其中仅将第二个字段中的所有-
替换为空格
echo 'xxxxx 2019-04-02 01:22:48.140 -7.2965 114.5721 35' | awk '{gsub(/-/," ",$2);print }'
xxxxx 2019 04 02 01:22:48.140 -7.2965 114.5721 35
然后只在整个文件上运行它。
awk '{gsub(/-/," ",$2)} 1' events
答案 1 :(得分:0)
您能否尝试使用sed
来跟踪,专门编写和测试提供的示例(假设您仅根据显示的示例在第二个字段中有破折号)。
sed 's/\([^ ]*\) \([^-]*\)-\([^-]*\)-\([^-]*\)\(.*\)/\1 \2 \3 \4 \5/' Input_file
输出如下。
xxxxx 2019 04 03 19:40:51.310 1.7615 31.1994 10
xxxxx 2019 04 02 01:22:48.140 -7.2965 114.5721 35
xxxxx 2019 04 01 23:05:28.610 -7.2121 114.537 21
答案 2 :(得分:0)
适用于这种情况的简单sed:
sed 's/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)/\1 \2 \3/' file