删除额外的管道(使用sed或tr)

时间:2014-10-16 22:48:49

标签: regex linux sed gnu tr

我有一个管道太多的文件,我想替换\ n和|用签名 a \ n。

e.g。

first name|last name|blahblah
|
first name|last name|blahblah
|

我希望它只是以下(没有额外的|)

first name|last name|blahblah
first name|last name|blahblah

理想情况下,我可以使用sed或tr(翻译)轻松完成此操作。问题是,当我这样做(并认为我逃脱管道)时,似乎无法正常工作。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您可以使用它来删除(d)所有以管道开头(^)的行。

 sed "/^|/d" file

答案 1 :(得分:2)

grep -v '^|$' filename适合我:

$ grep -v '^|$' <<EOT
> first name|last name|blahblah
> |
> first name|last name|blahblah
> |
> EOT

first name|last name|blahblah
first name|last name|blahblah

说明:

  • -v =显示与模式不匹配的行
  • ^ =行首
  • $ =行尾

基本上它只用|来过滤掉行。

我认为您不能使用tr,但使用sed可以使用相同的正则表达式完成。