
私のアドレス文字列には、(初期のプログラミングが不十分だったために)自由形式のテキストを大量に入力できるものがありました。この継承された混乱を整理する過程で、アドレス フィールドの末尾に、削除したいコンマが頻繁に(または頻繁に)あることに気付きました。
問題は、(これもよくあることですが)データを入力する人(回線ごとに支払います)が次のような文字列を入力することです。
`address_1_string , `
つまり、address_1_string の後に 2 つのスペース、削除したいコンマ、さらに 2 つのスペースが続きます。スペースの数 (コンマの前または後) は任意で、通常は 0 から 5 までです。問題は、address_string_1
それ自体に内部 (有効な) コンマがある可能性があるという事実によってさらに複雑になります。
つまり、私が探しているのは、行の末尾まで移動し、末尾のスペース、最初のコンマ、そして有効な [a-zA-Z0-9] ([:alphanum:]?) 文字が見つかるまでスペースを削除する正規表現です。
正規表現の概念はありますが、これは私の能力を超えています。これは Stackexchange への最初の投稿なので、間違った場所にいる場合はリダイレクトしてください。TIA。
答え1
< input sed 's/[[:space:],]*$//' > output
行末のスペースとカンマ文字をすべて削除します。
ファイルをその場で編集するために、一部のsed
実装にはのオプション-i
からヒントを得たオプションがあります。perl
-i
sed -i 's/[[:space:],]*$//' input-and-output # GNU, busybox, NetBSD, OpenBSD
sed -i '' 's/[[:space:],]*$//' input-and-output # FreeBSD, macOS