替换部分字符串Shell Scripting

时间:2015-07-07 09:54:51

标签: shell

我有一些行,想要在读取' |'字符三次之后的字符串上进行sed操作。我怎样才能在Shell脚本中执行此操作?

输入: aaaa|bbbbb|ccccc|hello

所需的输出: aaaa|bbbbb|ccccc|hel

这是在三个' |'

之后的问候语中完成的

- > sed 's/({.3}).*/\1/g'

2 个答案:

答案 0 :(得分:1)

使用cut命令代替sed

$ echo "aaaa|bbbbb|ccccc|hello" | cut -d '|' -f 4
hello

答案 1 :(得分:1)

你没有指定你要对最后一个字段做什么来改变"你好"进入" hel"。这是一种方式:

sed -r 's/^(([^|]+\|){3})(...).*/\1\3/' file
  • ([^|]+\|)表示管道分隔字段(带管道)
  • (([^|]+\|){3})表示三个这样的字段
    • 需要sed' -r选项
    • 在OSX或BSD-ish实现的sed上,使用-E代替)
  • 我使用(...)
  • 捕获接下来的三个字符
  • 然后用第一组和第三组捕获括号替换所有