【问题标题】:how to properly use of sed in linux [closed]如何在 linux 中正确使用 sed [关闭]
【发布时间】:2019-04-09 12:42:06
【问题描述】:

我在当前工作目录中有一个文件夹,里面有一个文件

./folder/sample

文件的内容有一些导出命令和#行,我如何让输出删除所有这些行,我不知道如何在这里使用 Sed,这很混乱。

示例文件里面的内容是这样的

#helloworld

export a=foo
export b=hello

#helloworld2

export c=king
export d=queen

预期的输出应该去掉#(注释行),导出单词和空行,输出应该是这样的。

a=foo
b=hello
c=king
d=queen

它还应该在同一文件夹中即时重命名文件。

./folder/rename-sample

请告诉我如何使用正确的 SED 命令来实现这一点。

【问题讨论】:

  • 首先阅读sed(1)man页面及其documentation。 StackOverflow 不是一个做我的家庭作业的网站,所以你的问题在这里是题外话。
  • @BasileStarynkevitch 我真的对 sed 感到困惑,否则我不会问这个问题。
  • 因此请花几个小时阅读相应的文档。然后尝试一下,如果您提出问题,请在其中提供minimal reproducible example
  • 欢迎来到 SO。 Stack Overflow 是一个面向专业和爱好者程序员的问答网站。目标是您将一些自己的代码添加到您的问题中,以至少显示您为解决这个问题所做的研究工作。

标签: linux sed scripting


【解决方案1】:

您可以使用以下命令完成任务:

sed '/^\(#\|$\)/d;s/^export //' ./folder/sample > ./folder/rename-sample
  • /^\(#\|$\)/ 匹配空行和以# 开头的行,
  • d 删除匹配行,
  • s/^export // 从以它开头的行中删除 export

有关更多信息,请参阅this manual

【讨论】:

  • Nit -(你的答案是正确的),但避免回答以 "Try""Try this" 开头的问题。尝试意味着您不确定接下来的操作是否有效,只是要求对方成为众所周知的豚鼠...乞求该行并在找到该行时删除该行,或者使用通用替换形式从行首删除"export "...”就像我说的那样,您的答案是正确且格式正确的,但可以做得更好。跨度>
  • @DavidC.Rankin 感谢您的建议,我会记住的。
猜你喜欢
  • 2022-11-13
  • 1970-01-01
  • 2020-04-07
  • 2018-03-26
  • 2012-12-24
  • 1970-01-01
  • 2020-12-10
  • 2021-02-15
相关资源
最近更新 更多