区切りファイルのフィールドで日付値を変更する

区切りファイルのフィールドで日付値を変更する

ph.lst次のレコードを含むファイル()があります。次の数字を削除する必要があります.txt。数字はランダムに生成されるため、常に同じであるとは期待できません。

test_wkly_20200428010453_PD.txt.1589553864|test_wky|05-01-2020 16:07:53|35858

削除したいです.1589553864。私の出力は次のようになります。

test_wkly_20200428010453_PD.txt|test_wky|05-01-2020 16:07:53|35858

頑張りました sed -i 's/\.[0-9]$*//' ph.lst

助けてください

答え1

次のsedコマンドを試してください。

sed -i 's/txt\.[0-9]*/txt/' ph.lst

次の数字の中から希望の数をtxt.に置き換えますtxt

答え2

あなたはコマンドを試したと言いました。

sed -i 's/\.[0-9]$*//' ph.lst

たった一つだけ非常に小さい何かが間違っていた。行の終わりと一致します$が、その点で一致させようとするわけではありません。代わりに

sed 's/\.[0-9]*//' ph.lst

または、

sed 's/\.[[:digit:]]*//' ph.lst

これにより、各入力行の最初の点(および点)の直後に表示されるすべての数字が削除されます。出力は標準出力に書き込まれるため、新しいファイルにリダイレクトできます。

それでawkあなたも同じことをするでしょう。

awk -F '|' 'BEGIN { OFS=FS } { sub("\.[[:digit:]]*", "", $1) }; 1' ph.lst

ph.lstこれは区切られたフィールドの行を解析し、|withと同じ正規表現を使用して部分文字列を削除しますsed(ここでは最初のフィールドでのみ機能します)。

関連情報