2

私はテキストファイルに次のものが含まれています:

台北市\\tai2bei3shi4 警察局\\jing3cha2ju2.

\\空白で始まり、空白で終わるすべてを削除したい。結果は次のようになります。

台北市 警察局

どうすればいいですか?1行のコマンドはありますか?

4

3 に答える 3

1

これはGNU sedを使用して動作します:

sed 's/\\[^ ]*//g' <textfile>

Sed の置換は次のように機能します。s/regexp/replacement/

  • そのregexp部分は です。これは、「 aとそれに続く非空白文字を\\[^ ]*検索する」ことを意味します\
  • 一致した部分を何もreplacement置き換えないため、 は空ですregexp
  • g各行で可能な限り何度も置換を実行する必要があることを意味します
于 2012-10-03T14:56:43.117 に答える
0

\\から始まり、空白で終わるものをすべて削除すると、次のようになります。

台北市警察局\\jing3cha2ju2.

いいえ

台北市 警察局

しかし、あなたが取得したい場合台北市 警察局

sed -r 's/\\\\[^ ]+( |\.)//g' file.txt

次の出力が生成されます。

台北市警察局

追加することにより、出力を2番目のファイルに送信できます> file2.txt

\\\\ あなたは両方のキャラクターをスケープする必要があります、それがそれらの4つがある理由です

[^ ]+ スペースを含まない一連の文字

( |\.)スペースまたはドット(ドットはエスケープする必要があります)

-r したがって、角かっこや括弧をエスケープする必要はありません

于 2012-10-03T20:44:07.473 に答える
0

入力に基づく sed 行:

sed 's/[0-9a-zA-Z.\\\\]*//g' file

テスト

kent$  echo "台北市\\tai2bei3shi4 警察局\\jing3cha2ju2."|sed 's/[0-9a-zA-Z.\\\\]*//g'
台北市  警察局
于 2012-10-03T21:11:02.877 に答える