이 파일이 있어요
10.1.1.1 www1
10.1.1.2 www2
10.1.1.3 www3
IP address
첫 번째 필드를 추출하여 다음 위치로 이동하고 싶습니다.http://www.foo.com=10.1.1.1/test.php
10.1.1.1 www1 # http://www.foo.com=10.1.1.1/test.php
10.1.1.2 www2 # http://www.foo.com=10.1.1.2/test.php
10.1.1.3 www3 # http://www.foo.com=10.1.1.3/test.php
이렇게 할 수 있지만 한 줄의 트릭으로 하고 for loop
싶습니다 .sed
답변1
sed 's@\([^ ]*\)\(.*\)@\1\2 #http://www.foo.com=\1/test.php@'
주소 를 구분 기호로 사용할
@
때 주소에 백슬래시를 사용할 필요가 없습니다 .IP 주소는 와 일치합니다
[^ ]*
. 즉, 비어 있지 않은 항목이 0회 이상 일치하고\(\)
에 의해 캡처됩니다\1
. 나머지 줄\2
,.*
즉 무엇이든 캡처됩니다.
답변2
한 줄 awk 방법: (정말로 awk가 필요하지 않으면 삭제하겠습니다)
개선을 위해 RomanPerekrest에게 감사드립니다.
awk '{ $3="# http://www.foo.com="$1"/test.php" }1' $file
또는 출력에서 탭을 유지하고 싶거나 필요한 경우:
awk 'BEGIN{OFS="\t";}{ $3="# http://www.foo.com="$1"/test.php" }1' $file