使用sed / awk插入文本中间行

时间:2013-07-01 01:53:17

标签: bash sed awk grep

我想在两个数字之间插入一个字符:foo bar 12 34成为foo bar 12/34

所以我希望像sed这样的东西匹配两个数字之间找到的空格,并用斜杠替换它,但我不知道该怎么做。

到目前为止,我有sed -e 's/[1-9][0-9] [1-9][0-9]/\//',但我知道用斜杠替换数字的空格。我需要找到两个数字之间的行中的空格,但只能替换空格。也许我需要grep来找到它,但我仍然需要整行才能打印出来。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

awk

echo 'foo bar 12 34' | awk '{print $1,$2,$3"/"$4}'

标识要与分隔符分隔的列,并将分隔符放在其间。

如果一行中有不同数量的字段,则使用循环标识要与下一个字段连接的字段。

答案 1 :(得分:1)

怎么样:

sed 's|\([0-9]\) \([1-9]\)|\1\/\2|'

答案 2 :(得分:0)

在这里,我测试了以下正则表达式。

echo "foo bar 12 23" | sed -e 's/\(.*\)\([1-9][0-9]\)\(.\)\([1-9][0-9]\)/\1\2\/\4/'