行の最初のスペースを削除

行の最初のスペースを削除

同じ行の別のスペースを削除せずに、下の行の最初のスペースのみを削除するにはどうすればよいですか?

入力例:

2015-04-18 10:21:59 10 05430 -9999 -9999 000000000000

出力例:

2015-04-1810:21:59 10 05430 -9999 -9999 000000000000

答え1

次の目的で使用できますsed

sed 's/ //' infile >outfile

これにより、ファイル内のすべての行に置換が適用され、infile最初の空白文字が空白スペースに置き換えられます(つまり削除)。出力はファイルに保存されますoutfilesed 's/ //N'(ここでは1Nから9の整数)、削除するスペースを選択できます。

行がシェル変数にある場合は、次のものを使用できます。

var="${var/ /}"

これは、コマンドと同じ操作を実行するために${parameter/pattern/string}inパラメータ拡張を使用しますが。この例では、結果の文字列が再保存されます。bashsed$var$var

答え2

使用awk:

> awk '{print $1$2,$3,$4,$5,$6,$7}' yourfile > outputfile

出力:

> cat outputfile

2015-04-1810:21:59 10 05430 -9999 -9999 000000000000

行のスペースを削除し、スペースをそのまま残すことができます。

仮説:入力ファイルには以下を含める必要があります。

  1. 先行スペースなし
  2. 連続スペースなし
  3. ラベルなし
  4. 合計7マス未満

仮定のいずれかに違反した場合、結果は次のようになります。正確ではない

答え3

ExモードでVimを使用できます。

ex -sc '%s/ //|x' file
  1. %すべての行を選択

  2. s変える

  3. x保存して閉じる

答え4

これは非常に簡単な質問です。

sed -i 's/ //' /path/to/file

追加せずにこのコマンドを試してください。Ssed式の終わりに。

各行の最初のスペースのみが削除されます。

関連情報