私はテキストファイルに次のものが含まれています:
台北市\\tai2bei3shi4 警察局\\jing3cha2ju2.
\\
空白で始まり、空白で終わるすべてを削除したい。結果は次のようになります。
台北市 警察局
どうすればいいですか?1行のコマンドはありますか?
私はテキストファイルに次のものが含まれています:
台北市\\tai2bei3shi4 警察局\\jing3cha2ju2.
\\
空白で始まり、空白で終わるすべてを削除したい。結果は次のようになります。
台北市 警察局
どうすればいいですか?1行のコマンドはありますか?
これはGNU sedを使用して動作します:
sed 's/\\[^ ]*//g' <textfile>
Sed の置換は次のように機能します。s/regexp/replacement/
regexp
部分は です。これは、「 aとそれに続く非空白文字を\\[^ ]*
検索する」ことを意味します\
replacement
置き換えないため、 は空ですregexp
g
各行で可能な限り何度も置換を実行する必要があることを意味します\\から始まり、空白で終わるものをすべて削除すると、次のようになります。
台北市警察局\\jing3cha2ju2.
いいえ
台北市 警察局
しかし、あなたが取得したい場合台北市 警察局
:
sed -r 's/\\\\[^ ]+( |\.)//g' file.txt
次の出力が生成されます。
台北市警察局
追加することにより、出力を2番目のファイルに送信できます> file2.txt
\\\\
あなたは両方のキャラクターをスケープする必要があります、それがそれらの4つがある理由です
[^ ]+
スペースを含まない一連の文字
( |\.)
スペースまたはドット(ドットはエスケープする必要があります)
-r
したがって、角かっこや括弧をエスケープする必要はありません
入力に基づく sed 行:
sed 's/[0-9a-zA-Z.\\\\]*//g' file
テスト
kent$ echo "台北市\\tai2bei3shi4 警察局\\jing3cha2ju2."|sed 's/[0-9a-zA-Z.\\\\]*//g'
台北市 警察局