LibreOffice calcに入力したい次の形式のデータがあります。
data | num | num | num | num
何らかの理由で、Libreofficeはデフォルトで文字列 "3214"を数字(末尾の空白)と見なします。
スペースとKleene固有の作業を表す(\s)*|
場所を変更したいです。そして、1行に複数の場所でこれを行います(すべての一致)。|
\s
*
私は試した:
sed -i 's/(\s)*|/|/' DataStats0914.txt
しかし、役に立たない。
答え1
なぜ引用するのですか?参照が必要な場合は、代わりに\(
とを使用してください\)
。
g
また、このオプションはパターンが複数回表示されるので注意してください。
sed -i 's/\s*|/|/g' DataStats0914.txt
テストケース:
echo 'data | num | num | num | num' | sed 's/\s*|/|/g'
得る:
data| num| num| num| num
答え2
いろいろあります正規表現文法。(\s*)
一連のスペースと一致真珠そして、正規表現を模倣する他の多くの現代のプログラムもあります。 Sed は以前のバージョンを使用します。基本正規表現角かっこはそれ自体を表し、\(…\)
グループ化に使用されます。 GNU sed (Linux バージョン) には、以下を-r
使用するオプションがあります。拡張正規表現(Perl正規表現はさらに拡張されました)。また、|
BREではそれ自体を表しますが、EREでは前にバックスラッシュが必要です。
s/[ \t]\+|/|/
|
GNU sed を使用してスペースの後に a を置き換えます。 POSIX 準拠の sed コマンドが必要な場合は、括弧のs/[ ][ ]*|/|/
ペアごとに 1 つのスペースと 1 つのタブを使用します。なぜなら、\t
と\+
はGNU拡張だからです。また、このs
コマンドは各行で一度だけ置き換えます。g
すべての発生を置き換えるには、サフィックスを追加します。
sed -i 's/[ \t]\+|/|/g' DataStats0914.txt
答え3
sed はスペースを削除します。
sed -i 's/ *|/|/g' file
答え4
テストされていないPythonishの3行目:
python -c 'import sys
for l in sys.readlines():
print("| ").join([f.strip() for f in l.strip().split("|")])'