sed/awk 匹配後刪除特定位置的字符

sed/awk 匹配後刪除特定位置的字符

我正在尋找 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

相關內容