awk 또는 sed를 사용하여 단어 목록을 검색하고 새 줄에 삽입하는 방법은 무엇입니까?

awk 또는 sed를 사용하여 단어 목록을 검색하고 새 줄에 삽입하는 방법은 무엇입니까?

추천해주신 모든 분들께 감사드립니다.

내 파일:

File1.sh(bash 쉘)

prefix_ud=이름;

path_file=/경로/파일 스크립트;

sed -i "$(grep -n 'uname.*' "$path_file" |tail -1|cut -f1 -d':')a "$prefix_ud" yahoo.com" "$path_file"

sed -i "$(grep -n 'uname.*' "$path_file" |tail -1|cut -f1 -d':')a "$prefix_ud" twitter.com" "$path_file"

파일 2 예상 출력:

text1
text2
uname google.com
uname gmail.com
uname hotmail.com

uname yahoo.com

uname twitter.com

text3
text4

답변1

추악하지만 이것이 OP가 원한 것이라고 생각합니다.

임시 파일을 만들고 각 줄에 "uname"을 추가합니다.

sed 's/^/uname /' file_1 > tmp_file

"uname..."의 마지막 항목을 file_2변수에 저장합니다.

last=$(awk '/uname.*/{a=$0}END{print a}' file_1)

마지막 발생 뒤에 다음을 추가하십시오.tmp_file

sed -e "/$last/rtmp_file" file_2

산출:

text1
text2
uname google.com
uname gmail.com
uname hotmail.com
uname yahoo.com
uname twitter.com
text3
text4

답변2

귀하의 질문이 예상 결과와 일치하지 않습니다. sed다음과 같이 처리할 수 있습니다.

sed 's/.*twitter.com/uname & Stuff/;s/.*yahoo.com/uname & Stuff/' file1.txt > file2.txt

&끝에 추가하고 텍스트 공간에 유의하세요.

관련 정보