次の行から距離を削除してcdv形式で出力する最良の方法は何ですか?コマンドラインでこれをかなり簡単に実行できますか?完全なスクリプトを書くのを避けたい。
Greece 282 km, Macedonia 151 km, Montenegro 172 km, Kosovo 112 km
Central African Republic 797 km, Chad 1,094 km, Republic of the Congo 523
出力は次のとおりです。
Greece,Macedonia,Montenegro,Kosovo
Central African Republic,Chad,Republic of the Congo
答え1
cdv形式が何であるかはわかりませんが、数値とオプションの測定単位を削除してから、残りのコンマの後のスペースを圧縮するだけです。
sed 's/ *[0-9]\+\(,[0-9]\+\)\?\( *km *\)\?//g;s/, \+/,/g' file.txt
読みやすくするには、拡張正規表現と同じです(GNUの場合sed
)。
sed -r 's/ *[0-9]+(,[0-9]+)?( *km *)?//g;s/, +/,/g' file.txt
答え2
私には同様のデータセットがあります。
sed -e 's/[0-9]*.[0-9]*.km//g' -e 's/\,\ /\,/g' <file>
答え3
パーティーに少し遅れています... GNU awk + sedを使用して行う方法は次のとおりです。
awk -F'[[:space:]]*[[:digit:],]+[[:space:]]*?km[[:space:],]*' 'BEGIN{OFS=","}{$1=$1;print}' | sed 's/,$//g'