grep을 수행한 다음 출력에서 ​​검색하고 바꾸는 방법은 무엇입니까?

grep을 수행한 다음 출력에서 ​​검색하고 바꾸는 방법은 무엇입니까?

iconv에서 다음과 같은 출력이 있습니다.

$ iconv -l | grep ISO | head -5
CSISO4UNITEDKINGDOM//
CSISO10SWEDISH//
CSISO11SWEDISHFORNAMES//
CSISO14JISC6220RO//
CSISO15ITALIAN//
durrantm:~

을(를) 로 어떻게 //바꿀 수 있나요 --?

나는 노력했지만 $ (iconv -l | grep ISO).gsub('\/\/','--')운이 없었다.

답변1

그것을 사용하는 방법은 여러 가지가 있습니다 tr. awk또는sed

TR:

 iconv -l | grep ISO |head -5 |tr '/' '-'

AWK:

iconv -l | awk '/ISO/{gsub("//","--"); print $0}' |head -5

사회경제개발국:

iconv -l | grep ISO |head -5 | sed 's/\//-/g'
# or, to avoid needing to escape the backslashes:
iconv -l | grep ISO |head -5 | sed 's#/#-#g'

답변2

grep다소 sed( 의 명령 하위 집합을 grep나타내며 [s] 스트림과 유사하게 적용됨 ) 일반적으로 함께 파이프할 필요가 없습니다.g/re/pedseded

iconv -l | sed '/ISO/!d;s,//,--,g' | head -n 5

답변3

sed옵션입니다:

$ iconv -l | grep ISO | sed 's#/#-#g' | head -5
CSISO4UNITEDKINGDOM--
CSISO10SWEDISH--
CSISO11SWEDISHFORNAMES--
CSISO14JISC6220RO--
CSISO15ITALIAN--

답변4

이를 수행하는 방법은 여러 가지가 있지만 기본적으로 출력을 억제하려면 sedaka -n또는 --quiet옵션을 사용하겠습니다.--silent

iconv -l | sed -n -e '/ISO/ s://:--:p'

이 sed 스크립트는 "ISO"가 포함되지 않은 행을 무시하고 //를 --로 변경한 후 (수정된) 일치하는 행을 인쇄합니다. 스크립트의 마지막 "p"는 sed에게 일치하는 줄을 인쇄하라고 지시합니다.

보기 흉한 백슬래시 탈출을 피하기 위해 :대신 정규식 구분 기호를 사용했습니다./

자세한 내용은 sed 매뉴얼 페이지를 참조하십시오.

관련 정보