
두 개의 변수(txt와 줄 번호)가 있습니다. x 줄에 txt를 삽입하고 싶습니다.
card=$(shuf -n1 shuffle.txt)
i=$(shuf -i1-52 -n1)
"카드"는 내 txt입니다. 섞인 "덱"에서 무작위로 선택된 카드이며 이를 무작위 행에 삽입하고 싶습니다. (i)
답변1
txt
추가하려는 텍스트가 할당되고 텍스트 i
를 삽입하려는 줄 번호가 할당되면 원하는 결과가 출력됩니다.
$ awk -v line="$i" -v text="$txt" '{print} NR==line{print text}' /path/to/textfile
text
추가하는 대신 지정된 줄 번호(이미 있는 텍스트에 추가)에 추가하도록 약간 수정합니다 .뒤쪽에위 코드에 표시된 대로 기존 행 i
(자체):
$ awk -v line="$i" -v text="$txt" ' NR!=line{print} NR==line{print $0 text}' /path/to/textfile
답변2
파일을 데이터 구조로 사용하면 애플리케이션에 심각한 성능 저하가 발생하지만 다음과 같이 foo
줄 번호에 변수 내용을 삽입 할 수 있습니다 .i
file.txt
printf '%s\n' "${i}i" "$foo" . x | ex file.txt
변수에 foo
줄 바꿈이 포함된 경우 몇 가지 극단적인 경우가 있지만 변수에 유효한 줄 번호가 있는 한 i
(즉, 의 줄 수보다 클 수 없음 file.txt
) 특수 문자 등에 관계없이 작동합니다.
그러나 파일의 줄 번호를 데이터 구조로 사용하는 것은 매우 비효율적인 셔플 방법입니다. 그러니 조심해.