如何从标准输入读取?

时间:2012-04-02 22:32:04

标签: linux bash shell

我正在尝试

grep searchterm myfile.csv | sed 's/replaceme/withthis/g'

并获得

unknown option to `s'

我做错了什么?

编辑:

根据评论,代码实际上是正确的。我的完整代码类似于以下内容

grep searchterm myfile.csv | sed 's/replaceme/withthis/g'
# my comment

看来由于某种原因,我的评论被作为输入提供给sed。很奇怪。

5 个答案:

答案 0 :(得分:96)

使用--expression选项

grep searchterm myfile.csv | sed --expression='s/replaceme/withthis/g'

答案 1 :(得分:22)

使用“-e”指定sed表达式

cat input.txt | sed -e 's/foo/bar/g'

答案 2 :(得分:5)

要从stdin而不是从文件中捕获sed,您应该使用-e

像这样:

curl -k -u admin:admin https://$HOSTNAME:9070/api/tm/3.8/status/$HOSTNAME/statistics/traffic_ips/trafc_ip/ | sed -e 's/["{}]//g' |sed -e 's/[]]//g' |sed -e 's/[\[]//g' |awk  'BEGIN{FS=":"} {print $4}'

答案 3 :(得分:0)

如果您尝试对文件中的文本进行就地更新,那么在我看来这很容易推理。

grep -Rl text_to_find directory_to_search 2>/dev/null | while read line; do  sed -i 's/text_to_find/replacement_text/g' $line; done

答案 4 :(得分:-10)

  1. 使用vi myfile.csv
  2. 打开文件
  3. Escape
  4. 输入:%s/replaceme/withthis/
  5. 键入:wq,然后按 Enter
  6. 现在,您将在文件中添加新模式。