이 같은 파일이 있습니다
...
1562 first part
1563 H col3 H col4
1564 H col3 H col4
...
3241 H col3 H col4
3242 third part
...
나는 첫 번째 대체 할 H
에 대한 모든 라인을 H#
함께 #
외관의 수입니다. 출력은 다음과 같아야합니다.
...
1562 first part
1563 H1 col3 H col4
1564 H2 col3 H col4
...
3241 H1652 col3 H col4
3242 third part
...
지금까지 시도했습니다.
max=`grep -c ' H ' b`
while [[ "$i" -le $max ]];do
grep -m $i ' H ' b|tail -n1|sed "s/H/H$i/1"
let i=i+1
done
이 코드는 느리고 교체 할 모든 줄을 읽어야하며 파일의 첫 번째 부분과 세 번째 부분을 추가 할 수 없습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 아마 어색해? 감사합니다.
예를 들어 다음을 사용할 수 있습니다.
$ awk '/H/{sub("H", "H"++v)}1' file
1562 first part
1563 H1 col3 H col4
1564 H2 col3 H col4
3241 H3 col3 H col4
3242 third part
...
이것은 우리가 계속 증가시키는 변수 와 함께 H
그것을 포함 하고 대체하는 그 줄을 찾습니다 . 일치하는 모든 패턴에서이 변경을 수행하려는 경우 대신 사용할 수 있습니다 .H
H
gsub()
sub()
마지막 1
은 참 조건이므로 기본 awk 작업을 수행합니다. {print $0}
즉, 전체 행을 인쇄합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다