awk または sed を使用して、テキストの最後の行でテキスト形式の検索を実行します。

awk または sed を使用して、テキストの最後の行でテキスト形式の検索を実行します。

私の出力には多くの行があります。出力ライン数は一貫性のない。最後の行を選択して文字を見つけて置き換える方法はありますか?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

関連情報