
내 출력에는 많은 줄이 있습니다. 출력 라인 수는일관성 없는. 마지막 줄을 선택하여 문자를 찾아서 바꿀 수 있는 방법이 있습니까? 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
스크립트가 있고 실제로 더 많은 작업을 수행해야 하는 경우 한 줄만 버퍼링하는 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