次のようなファイルがあります。
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
私はそれをこのように見せたい(インデントを削除する):
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
どのようにこれを行うことができますか(多分sed
を使用して?)?
sed "s/^[ \t]*//" -i youfile
警告:これは元のファイルを上書きします。
この特定の問題では、次のようなものが機能します。
$ sed 's/^ *//g' < input.txt > output.txt
行の先頭にあるすべてのスペースを何も置き換えないでください。タブも削除する場合は、次のように変更します。
$ sed 's/^[ \t]+//g' < input.txt > output.txt
/の前の先頭の「s」は「置換」を意味します。 /は、パターンの区切り文字です。最初の2つの/の間のデータは一致するパターンであり、2番目と3番目の/の間のデータはそれを置き換えるデータです。この場合、何も置き換えません。最後のスラッシュの後の「g」は、「グローバルに」実行することを意味します。つまり、最初に一致したものだけでなく、ファイル全体に適用します。
最後に、< input.txt > output.txt
の代わりに-i
オプションを使用して、ファイルを「インプレース」編集することができます。つまり、結果を含めるために2番目のファイルを作成する必要はありません。このオプションを使用すると、元のファイルが失われます。
AWKを使用できます:
$ awk '{$1=$1}1' file
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
$ sed 's|^[[:blank:]]*||g' file
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
while
/read
ループwhile read -r line
do
echo $line
done <"file"
このPerlコードは元のファイルを編集します。
Perl -i -ne 's/^\s+//;print' file
次は、元のファイルを編集する前にバックアップコピーを作成します。
Perl -i.bak -ne 's/^\s+//;print' file
Perlはsed(およびawk)から大きく借りていることに注意してください。
FWIW、editingこのファイルの場合、すべての行を強調表示してタブ解除ボタンを使用できます。
これをコマンドラインから実行する必要があるという要件があるかどうかはわかりません。もしそうなら、:thumbs-up:受け入れられた答えに! =)
sed -e 's/^ [\ t] * //' name_of_file_from_which_you_want_to_remove_space> 'name _file_where_you_want_to_store_output'
e.g:- sed -e 's/^ [\ t] * //' file1.txt> output.txt
注:
s /:置換コマンド〜各アドレス行のパターンの置換(^ [\ t] *)
^ [\ t] *:検索パターン(^ –行の先頭。[\ t] *は、タブを含む1つ以上の空白スペースに一致します)
//:一致したすべてのパターンを置換(削除)します
どうぞ:
user@Host:~$ sed 's/^[\t ]*//g' < file-in.txt
または:
user@Host:~$ sed 's/^[\t ]*//g' < file-in.txt > file-out.txt