1

次のようなファイルに URL データのリストがあります。

    http://site.com/some/site.htm,12/5/2012 3:30:39 PM
    http://site.com/some/site.htm,12/5/2012 9:30:30 AM
    https://site.com/some/site.htm,12/5/2012 13:30:30 PM
    http://site.com/some/site.htm,12/5/2012 10:30:39 AM

そして、私はそれを次のようにしたい:

    http://site.com/some/site.htm,12/5/2012 3:30 PM
    http://site.com/some/site.htm,12/5/2012 9:30 AM
    https://site.com/some/site.htm,12/5/2012 13:30 PM
    http://site.com/some/site.htm,12/5/2012 10:30 AM

基本的には、sed を使用して行から :XX 秒の部分を削除します。数分後にもすべて削除されてもかまいません。バッチ ファイル スクリプトを使用しているため、sed または cut を使用できます。誰でも助けることができますか?

これまでのところ、次のことを試しました。

sed 's/.*:([^,*]*) AM/\1/g' file.txt
4

4 に答える 4

3

このようにsed -r 's/(.*):[0-9]{2}(.*)/\1\2/'

$ cat file
    http://site.com/some/site.htm,12/5/2012 3:30:39 PM
    http://site.com/some/site.htm,12/5/2012 9:30:30 AM
    https://site.com/some/site.htm,12/5/2012 13:30:30 PM
    http://site.com/some/site.htm,12/5/2012 10:30:39 AM

$ sed -r 's/(.*):[0-9]{2}(.*)/\1\2/' file
    http://site.com/some/site.htm,12/5/2012 3:30 PM
    http://site.com/some/site.htm,12/5/2012 9:30 AM
    https://site.com/some/site.htm,12/5/2012 13:30 PM
    http://site.com/some/site.htm,12/5/2012 10:30 AM

説明:

(.*):     # Capture everything up the last : (greedy)
[0-9]{2}  # Match the two digits 
(.*)      # Capture the rest of the line

\1\2      # Replace with the two captured groups

注:-r拡張正規表現を使用してください。フレーバーに -E依存する可能性があります。.sedman

編集:

$ sed -r 's/[0-9]{2}:[0-9]{2} /00 /' file
    http://site.com/some/site.htm,12/5/2012 3:00 PM
    http://site.com/some/site.htm,12/5/2012 9:00 AM
    https://site.com/some/site.htm,12/5/2012 13:00 PM
    http://site.com/some/site.htm,12/5/2012 10:00 AM
于 2012-12-05T16:11:49.420 に答える
0

簡単な解決策として、コロンの後にスペースが続く 2 桁を探し、スペースだけに置き換えます。

sed 's/:[0-9][0-9] / /g' file.txt
于 2012-12-05T16:17:19.993 に答える
0

本当に簡単な解決策:

sed 's/:.. / /' file

しかし、これは一般的すぎるため、おそらくお勧めできません。また、書式設定が少しでも変更されると、問題が発生する可能性があります。

于 2012-12-05T16:18:35.313 に答える
0

別の解決策:

sed -r 's/...( [AP]M)$/\1/' file.txt

スペースの後に AM または PM が続く行に一致し、その前にある 3 文字を削除します。

$行末の一致、括弧はAMorを保持するので、置換テキストでPMそれを参照できます。コマンドライン オプションを使用すると、拡張正規表現を使用できます (参照に必要\1) 。-r\1

于 2012-12-05T16:18:46.460 に答える