0

これは非常に単純なはずですが、私の人生では、今日の午後にgnu-sedを実行することはできません.

問題のファイルには、次のような行があります。

                        PART NUMBER  PART NUMBER     QUANTITY WEIGHT         -999   -4,999  -9,999
w/ UL APPROVAL
                                          MIN-3

「MIN-3」行のようなすべての行の前に「>」文字を追加する必要があります。これらの行を他の行と明確に区​​別する唯一のものは次の 2 つです。

  1. 最初の文字はスペース " " です。
  2. 行にはコンマが含まれていません。

私は主に次のようなことを試しました:

/^ +[^,]+$/ s/^/>/

/^ +[\w\-]+$/ s/^/>/

/^ +(\w|\-)+$/ s/^/>/

私は認めます、私はsedにやや慣れていません。:)

編集:私の最初のターゲットはsedですが、perlまたはawkを使用する回答も高く評価されます。

4

3 に答える 3

1

あなたの説明によると、これは次のようにする必要があります。

sed 's/^\([ ][^,]*\)$/> \1/' input

行がスペースで始まり、最後までカンマ以外のものが含まれている場合、完全な行に一致します。

于 2013-05-23T22:15:50.863 に答える
1

これを試して:

sed '/^ [^,]*$/s/^/>/'

出力は、MIN-3先頭にある行のみです>

sed デフォルトは基本的な正規表現を使用します。そのため、スクリプトに+含める必要が\+あります。それがあなたの時間をつぶす問題かもしれないと思います。-rただし、sed で拡張正規表現を使用できるように追加することもできます。

于 2013-05-23T22:19:01.013 に答える