同じ行の別のスペースを削除せずに、下の行の最初のスペースのみを削除するにはどうすればよいですか?
入力例:
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
最初の空白文字が空白スペースに置き換えられます(つまり削除)。出力はファイルに保存されますoutfile
。sed 's/ //N'
(ここでは1N
から9の整数)、削除するスペースを選択できます。
行がシェル変数にある場合は、次のものを使用できます。
var="${var/ /}"
これは、コマンドと同じ操作を実行するために${parameter/pattern/string}
inパラメータ拡張を使用しますが。この例では、結果の文字列が再保存されます。bash
sed
$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
行のスペースを削除し、スペースをそのまま残すことができます。
仮説:入力ファイルには以下を含める必要があります。
- 先行スペースなし
- 連続スペースなし
- ラベルなし
- 合計7マス未満
仮定のいずれかに違反した場合、結果は次のようになります。正確ではない
答え3
ExモードでVimを使用できます。
ex -sc '%s/ //|x' file
%
すべての行を選択s
変えるx
保存して閉じる
答え4
これは非常に簡単な質問です。
sed -i 's/ //' /path/to/file
追加せずにこのコマンドを試してください。Ssed式の終わりに。
各行の最初のスペースのみが削除されます。