私はawkまたはsedソリューションを探しています。私は天才でもありません。私はこの記事を書き始めたときに出てきたすべての提案を読んだ。
データ行を含むファイルがあります。
name
thisdate=Sep 2 23:59:59 2022 GMT
name
thisdate=Sep 15 23:59:59 2022 GMT
名前と日付/時刻の両方が異なります。日付番号は常に同じ位置にあり、常に同じ文字数を占めます(2)。時/分/秒は常に行の上の同じ位置にあります。すべての行がthisdate
常に将来の日付ではなく、空行もありません。
閉じようとし、この日付行から時間を削除しようとします thisdate=
(先行スペースthisdate
)。次に、位置18〜26の文字を削除します(正しく計算された場合)。
私はいくつか試しましたが、主に正しい方向を示すために私のニーズに合ったものを探しています。
952 sed 's/^\(.\{18\}\)\(.\{26\}\)/\1/' file <--this may not have worked as I didn't key on a match?
958 sed -i 's/thisdate=(.{11})18/\26/' file
959 sed -i 's/thisdate=(.{10})17/\25/' file
私は何かを見逃していると確信していますが、誰もが正しい方向に私を指すことができれば幸いです!
ベストアンサー1
6文字目以降の9文字を削除するだけで十分です thisdate=
。
sed 's/^\( thisdate=.\{6\}\).\{9\}/\1/' file
与えられたデータに対して以下が生成される。
name
thisdate=Sep 2 2022 GMT
name
thisdate=Sep 15 2022 GMT