2

先行スペースなしで grep の結果をコンソールに出力しようとしています。各行の先頭のゼロを除外する正規表現を考えてみましたが、失敗しました.sedで作成できるという答えが見つかりました。だから私はこのコマンドを試しました

cat feed* | grep '^.*[{]$' | sed -e 's/^[ \t]*//;s/[ \t]*$/'

エラーが発生しました: sed: -e 式 #1、文字 22: 終了していない `s' コマンド

sed を使ったことがないので、マニュアルを読んでも 's/^[ \t] //;s/[ \t] $/' が何をすべきか理解できませんでした。

誰かが grep を使用してそれを行うことができるかもしれません。完璧でしょう (実用的ではないことは理解していますが、やってみると面白いです)。そして、誰かがその式で sed がどのように機能するか、そして何が間違っているのかを説明してくれたら、とても感謝しています。

4

2 に答える 2

2

sed2 番目の式に置換がありません。言う:

sed -e 's/^[ \t]*//;s/[ \t]*$//'
                              ^
                              |
                              |== This was missing thereby causing the error
于 2013-10-22T13:43:48.820 に答える
1

で先頭と末尾のスペースを削除してください:

grep -Po '\S.*?(?=\s*$)' infile

フレーバーを使用し、perl行全体ではなく、一致するもののみを出力します。スペース以外の文字で一致を開始し、先読みを使用して行末まで空白で一致を完了するまで、貪欲でない量指定子を使用します。

于 2013-10-23T21:00:14.207 に答える