私の出力には多くの行があります。出力ライン数は一貫性のない。最後の行を選択して文字を見つけて置き換える方法はありますか?awk
またはを使用していない場合は、*ツールをsed
使用してください。Unix
以下は、変更が必要な入力の簡単な例です。通常、長さは1〜200行であり、さまざまです。最後のカンマを見つけて削除したいです。
入力例
202", # 1233eda
049", # 1022ats
194", # 109nunnz
180", # 0010204NE
113", # 10195y.it
489", # 1-420
345", # 192EelL
209", # 18tWa
145", # 18tr
137", # 1165y_SVM
561", # 1odeN
737", # 1hoer_co
816", # 10138wDUSW
954", # 1013saLN349ND
969", # 112t-2_420
114", # 1012i.fm
650", # 10zy.i
860", # 1119b.co
177", # 1.0109tz
希望の出力
202", # 1233eda
049", # 1022ats
194", # 109nunnz
180", # 0010204NE
113", # 10195y.it
489", # 1-420
345", # 192EelL
209", # 18tWa
145", # 18tr
137", # 1165y_SVM
561", # 1odeN
737", # 1hoer_co
816", # 10138wDUSW
954", # 1013saLN349ND
969", # 112t-2_420
114", # 1012i.fm
650", # 10zy.i
860", # 1119b.co
177" # 1.0109tz
答え1
そしてsed
:
$ sed '$s/,//' file
オペレーター | 重要性 |
---|---|
$ |
ファイルの最後の行 |
s/TO_REPLACE/REMPLACEMENT/ |
代替スカル |
, |
文字通りの意味 ',' |
以下を使用する行Perl
:
$ perl -F, -ne 'if (eof()) {print join " ", @F} else {print}' file
出力
202", # 1233eda
049", # 1022ats
194", # 109nunnz
180", # 0010204NE
113", # 10195y.it
489", # 1-420
345", # 192EelL
209", # 18tWa
145", # 18tr
137", # 1165y_SVM
561", # 1odeN
737", # 1hoer_co
816", # 10138wDUSW
954", # 1013saLN349ND
969", # 112t-2_420
114", # 1012i.fm
650", # 10zy.i
860", # 1119b.co
177" # 1.0109tz
答え2
それがその入力で実行するすべてであれば、sedソリューションを使用します。出版社:@Gillesただし、すでにsed
スクリプトがあり、実際にさらに作業を行う必要がある場合は、1行だけバッファリングするperl
方法は次のとおりです。awk
$ awk 'NR>1{print p} {p=$0} END{sub(/,/," ",p); print p}' file
202", # 1233eda
049", # 1022ats
194", # 109nunnz
180", # 0010204NE
113", # 10195y.it
489", # 1-420
345", # 192EelL
209", # 18tWa
145", # 18tr
137", # 1165y_SVM
561", # 1odeN
737", # 1hoer_co
816", # 10138wDUSW
954", # 1013saLN349ND
969", # 112t-2_420
114", # 1012i.fm
650", # 10zy.i
860", # 1119b.co
177" # 1.0109tz