我有一个如下的文本文件:
2018 11 20
2018 11 21
2018 11 22
2018 11 23
2018 11 24
2018 11 25
2018 11 26
2018 11 27
该文件由年、月、日三列组成。我需要-
在年、月、日之间添加连字符,如下所示:
2018-11-20
2018-11-21
2018-11-22
2018-11-23
2018-11-24
2018-11-25
2018-11-26
2018-11-27
答案1
sed
假设最后一列后没有空格,我们可以这样做
sed 's/[[:blank:]]/-/g' input.txt
如果可能存在其他字符,而我们特别想捕获“数字序列,然后是空格序列”的模式,我们还可以使用括号中的组模式和扩展正则表达式-r
:
sed -r 's/([[:digit:]]?+) ?+([[:digit:]]?+) ?+([[:digit:]]?+)/\1-\2-\3/' input.txt
壳
如果我们想要仅限 shell 的解决方案:
while read -r year month day trash; do
printf "%s-%s-%s\n" "$year" "$month" "$day"
done < input.txt