【问题标题】:If a sentence starts with a specific word, how to change a word in that sentence if it does exist? [closed]如果一个句子以一个特定的单词开头,如果它确实存在,如何更改该句子中的单词? [关闭]
【发布时间】:2013-04-28 15:06:43
【问题描述】:

所以,基本上搜索.txt文件中的行,如果它以诸如“This”之类的单词开头,如果它确实存在,如何交换该句子中的目标单词?愿意用 bash、perl 或 awk 来做。

【问题讨论】:

  • 您要更改文件中的单词吗?或者只是 cosole 打印
  • 更改文件中的单词
  • @Exeter 您将需要更加具体。您是说 line 应该以“This”开头,还是句子应该以“This”开头?您要更改单词“This”还是其他单词?
  • 该行的第一个单词应该以“This”开头。然后基本上在该行中查找目标单词并能够更改文档中的单词。 “句子”是我的一个糟糕的词选择。
  • 一个例子总是有用的东西

标签: perl bash awk


【解决方案1】:
perl -pi -e "s/^This\b/That/" myfile

或者,如果您想更改行内的不同字词,

perl -pi -e "s/\btargeted\b/swap/ if /^This\b/" myfile

【讨论】:

  • 仔细看...只需要能够在以“This”开头的句子中找到一个单词,然后能够更改该单词。
  • @Exeter:我不确定你的意思。你是说你现在的要求不一样了?你在区分 linesentence。既然你已经说过这个词是一个糟糕的选择,你为什么还要谈论句子?
  • 我认为这是一种习惯的力量。我尝试了第二种解决方案,但得到了这个: String found where operator expected at perl5.pl line 1, near "pie "s/\bcan\b/can't/ if /^This\b/"" (Do you need to predeclare pie?) perl5.pl line 1 的语法错误,靠近 "pie "s/\bcan\b/can't/ if /^This\b/"" perl5.pl 的执行由于编译错误而中止。跨度>
  • @Exeter 这些是单行代码,不能在脚本中使用。除非它是一个 shell/批处理脚本。
  • 当我直接放入shell时,它说: Can't open perl script "s/\bcan\b/can't/ if /^This\b/": No such file或目录(但文件确实存在)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 2022-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-23
相关资源
最近更新 更多