Bashを使用して10進テキストファイルを削除する方法

Bashを使用して10進テキストファイルを削除する方法

このようなテキストファイルがあります。

172.16.0.30,42056.0
172.16.0.30,42058.0
172.16.0.30,42060.0

出力するポートの10進数を削除したいです。

172.16.0.30,42056
172.16.0.30,42058
172.16.0.30,42060

どうすればいいですか?

答え1

ポートの素数がすべて固定長の場合は、次のものを使用できます。この回答

echo ${line%%??}

ここで、数字は?削除する固定文字数に対応します。

または、次のものを使用できます。

echo ${line%.*}

~からこのbash参照%方法:

$ stringの末尾から$ substringと最も短い一致を削除します。

「最も短い」ことはわかっていますが、小さいオクテットと長いポート10進数(1.1.1.1,42056.0000など)を持つIPを使用しても問題はありませんでした。

ファイルを繰り返すには、次のコマンドを使用できます。最初の検索結果徳徳から)

while IFS= read -r line; do echo $line; done < input_file

上記を使用して結果を新しいファイルに追加する場合、1つの方法は次のとおりです。

while IFS= read -r line; do echo ${line%.*} >> trimmed_file; done < input_file

関連情報