次のファイルを検討してください。
Name Id department
some 13 IT
hey 12 IT
私が本当にやりたいことは、ユーザーの名前を読み、特定のIDまたは部門を編集することです。これを実行しようとしていますが、hey行でのみ置き換えることができるsed
正しい正規表現が見つかりません。IT
私は正規表現の世界に比較的新しい人であり、いくつかの基本事項以外に知っていることはあまりありません。
答え1
sed で正規表現をコマンドプレフィックスとして使用すると、その正規表現に一致する行のみが編集されます。
sed -r '/^hey\s/s/(\s)IT$/\1whatever/'
答え2
パターンで特定の行を見つけ、sed
fooを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
良い出力のためにはオプションです。