sed - 前の文字と追加の文字を含む4桁の文字列を検索します。

sed - 前の文字と追加の文字を含む4桁の文字列を検索します。

sed大容量csvファイルから特定の値を検索して置き換えることができるコマンドを作成しようとしています。年などを含むこの列がありますが、2005 - 2006 2001 - 2003csvファイルにこれらの内容を含む多くのセルが含まれるエラーもあります-2001 -2010 -1998。私がしたいのは、「become」などの-ように文字列の末尾の文字を移動することです。パターンは影響を受けるすべてのセルで同じで、すべての値は文字+ 4桁の年で構成されています。-20012001--

sed -e "^-[0-9][0-9][0-9][0-9]"

私は正規表現に初めて触れ、現在いくつかのチュートリアルに従います。

答え1

sed -e "s/^-\([0-9][0-9][0-9][0-9]\)/\1-/" file.csv

\(の間の部分は\)置換セクションで引用され、\1「検索語に一致する項目」と置き換えることができます。

^csvファイルを使用している場合は、列が実際に最初の列(行の先頭と一致)の場合にのみ機能します。列が別の場所にある場合は、次のものを使用できます。

sed -e 's/\(,[[:space:]]*\)-\([0-9][0-9][0-9][0-9]\)/\1\2-/' file.csv

代わりに。 (カンマ(カンマの後にスペースが続く可能性があります)で始まる列を検出し、交換時にその開始を再利用します。)

関連情報