
csvファイルから始まる行
14/Feb/2016:15:21:33-0500]http://map1.link.de/mk
交換/削除と追加が最も簡単な部品は何ですか?
]http://map1.link.de/
そして
,
map
どんな数でも可能であることを覚えておいてくださいmap1, map2, map3
数行の例:
14/Feb/2016:15:21:33-0500]http://map1.link.de/mk
14/Feb/2016:16:21:33-0500]http://map5.link.de/mk
最終結果
14/Feb/2016:15:21:33-0500,mk
14/Feb/2016:16:21:33-0500,mk
答え1
私は以下を使用しますsed
:
sed 's/\(.*\)].*\/\(.*$\)/\1,\2/' csv
14/Feb/2016:15:21:33-0500,mk
14/Feb/2016:16:21:33-0500,mk
csv
このファイルはどこにありますか?
cat csv
14/Feb/2016:15:21:33-0500]http://map1.link.de/mk
14/Feb/2016:16:21:33-0500]http://map5.link.de/mk
説明:
\(.*\)]
=検索と救う最初の[
.*\/
=までの各文字の後に検索 - 実行いいえ保存 - 最後まですべて/
\(.*$\)
=救うその後、行末まで(mk
)
\1,\2
=私たちが保存したものに置き換えられ、間にカンマを追加します。
答え2
次のように、拡張[0-9]\{1,\}
正規表現演算子を使用して、POSIXly または移植性が低下する 1 つ以上の 10 進数のシーケンスを表すことができます。+
[0-9]+
sed 's@]http://map[0-9]\{1,\}\.link\.de/@,@' file.csv
14/Feb/2016:15:21:33-0500,mk
14/Feb/2016:16:21:33-0500,mk
または
sed -E 's@]http://map[0-9]+\.link\.de/@,@' file.csv
14/Feb/2016:15:21:33-0500,mk
14/Feb/2016:16:21:33-0500,mk
変えたいならどの完全修飾ホスト名が一致するURIだけでなく、URIを使用すると、map?.link.de
後者を次のように単純化できます。
$ sed -E 's@]http://[^/]*/@,@' file.csv
14/Feb/2016:15:21:33-0500,mk
14/Feb/2016:16:21:33-0500,mk