正規表現は、その行の他の単語と一緒にその行に移動して、特定の行の特定の単語を編集できます。

正規表現は、その行の他の単語と一緒にその行に移動して、特定の行の特定の単語を編集できます。

次のファイルを検討してください。

Name    Id    department
some    13    IT
hey     12    IT

私が本当にやりたいことは、ユーザーの名前を読み、特定のIDまたは部門を編集することです。これを実行しようとしていますが、hey行でのみ置き換えることができるsed正しい正規表現が見つかりません。IT

私は正規表現の世界に比較的新しい人であり、いくつかの基本事項以外に知っていることはあまりありません。

答え1

sed で正規表現をコマンドプレフィックスとして使用すると、その正規表現に一致する行のみが編集されます。

sed -r '/^hey\s/s/(\s)IT$/\1whatever/'

答え2

パターンで特定の行を見つけ、sedfooをbarに置き換えるには:

sed '/pattern/s/foo/bar/'

あなたの場合、名前は最初の列のように見えるので、^スキーマに「行の開始」タグを追加することもできます。

答え3

仕事用として使用するのではなく、使用する必要がawkあります。sed

ファイルがタブ区切りの場合:

 awk -F$'\t' '$1=="hey"{$3="HR"}{OFS=FS;print}' file

スペースで区切られた場合:

awk '$1=="hey"{$3="HR"}1' file | column -t

column -t良い出力のためにはオプションです。

関連情報