このようなテキストファイルがあります。
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