私は 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