8

このようなファイルfile.txtにテキストがあります

xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
a    b   c // delimited by tab
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx

sedファイル内のテキストを検索して置換できることを知っています。行が ab (タブで区切られている) で始まる場合、de f に置き換える必要があります。したがって、上記のファイルは

xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
d    e   f // delimited by tab
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx

これを実行して検索と置換を行うことができます。行が ab で始まるインスタンスのみが必要で、行全体を置換します。

sed -i 's/a/\t/\b/\t\/c/REPLACED TEXT/g' file.TXT
4

4 に答える 4

27

^行の先頭を表す記号を使用します。

sed -i 's/^a\tb.*$/REPLACED TEXT/g' file.TXT

説明:

  • ^行/入力の始まりを意味します
  • \tタブ記号を意味します
  • .任意の文字を意味します
  • *前の式の0個以上を意味します
  • $行/入力の終わりを意味します
于 2012-07-25T23:10:45.847 に答える
1

awk

awk '/^a\tb/{$0="REPLACED TEXT"} 1' foo.txt
于 2012-07-26T16:13:50.247 に答える
1

以下は、行が で始まる場合、行全体を置き換えますa<tab>b<tab>c。は.*$、置換対象の行全体が一致するようにします。あなたの例の正規表現には含まれていましたが、散文ではandcのみが言及されていたため、が必要かどうかは明確ではありませんでした。そうでない場合は、正規表現から削除します。abc\tc

s/^a\tb\tc.*$/REPLACED TEXT/g
于 2012-07-25T23:13:31.903 に答える
0

これはあなたのために働くかもしれません(GNU sed):

sed -i '/^a\tb/c\replacement text' file
于 2012-07-26T08:29:38.693 に答える