data_list.txt
私はMac端末(bash)を使用しており、次の行を含むファイルがありますn
。
aaabbbccc_7777.txt
nnhhaa_8888.txt
ayquabay_9999.txt
ayqynbnbn_1122.txt
ooppaa_3454.txt
各行の最後の8文字をどのように削除しますか?
期待される出力data_list.txt
:
aaabbbccc_
nnhhaa_
ayquabay_
ayqynbnbn_
ooppaa_
ご協力ありがとうございます
ベストアンサー1
最後の8文字を削除するか、8文字未満の場合はすべて削除するには、次のようにします。
sed "s/.\{0,8\}$//; /^$/d" data_list.txt
正規表現を拡張する必要はありません。これにより、できるだけ多くの文字が消去されますが、8文字以下です。空の行が残っている場合は、出力から削除されます。
末尾のスペースを削除する必要がある場合(8文字以内には含まれません)、次のことができます。
sed "s/.\{0,8\}[[:space:]]*$//" data_list.txt
最後に削除する必要がある実際の基準が何であるかを推測できます(たとえば、下線の後のすべての項目または数字+拡張子)。ただし、ファイル拡張子とその前の数字を削除したい場合:
sed "s/[[:digit:]]*\..*$//" data_list.txt
他の答えは、すでに下線の後のすべての項目を削除する方法を示しているので、繰り返しません。