다른 파일 이름 바꾸기

다른 파일 이름 바꾸기

나는 word-word2-word3-word4.txt라는 이름의 파일을 저장합니다. "단어 수"의 양은 문서마다 다릅니다.

일부 대시를 word+word2-word3+word4.txt와 같은 더하기 기호로 바꾸고 싶습니다.

숫자를 입력하여 변경할 대시 또는 빼기 기호를 지정하고 싶습니다.

작동하지 않는 어색한 스크립트가 있습니다. 그 스크립트의 역할은 다음과 같습니다.

  • 대시는 나중에 awk 분할 목적으로 세미콜론으로 보완됩니다.
  • 사용자는 대체할 대시를 지정하기 위해 숫자를 입력합니다.
  • 파일 이름 끝에 숫자가 추가됩니다(예: aaa-;bbb-;ccc.txt 1 3).
  • 그리고 처리를 위해 awk로 파이프하세요.
  • awk에서 추가된 숫자의 배열을 생성하고,
  • 첫 번째 필드가 분할된 단어 배열
  • 그런 다음 숫자 배열을 사용하여 분할 배열의 인덱스를 지정하고 '+'에 gsub ';'를 사용합니다.

빠른 조작과 실험을 위해 파일 이름을 하드코딩하는 끔찍한 스크립트는 다음과 같습니다. awk 스크립트를 효율적으로 종료하는 방법을 모르겠습니다. 계획은 awk를 종료하고 sed에서 최종 대체를 수행하는 것입니다.

이것은 학습이 많이 부족한 Dog's Dinner 스크립트라는 것이 분명합니다. 그럼에도 불구하고 원하신다면 어떤 도움이라도 주시면 감사하겠습니다.

file='wot-;wit-;wet-;wat.txt'; 
echo -n "type digits"; 
read nos; varr=$(echo $nos); 
newfile=$(echo $file $varr); 
echo "$newfile" | awk '{ for (i=2; i<=NF ;i++) arr[i]=$i}
                         END{ split($1,spl,"-");
                              for( var in arr ) gsub(";","+", spl[var]); 
                              print THIS IS NOT WORKING - CAN'T GET ANYTHING USEFUL OUT }'

답변1

잘 모르겠지만 + awk방법은 알고 있습니다.shellsed

file='wot-;wit-;wet-;wat.txt'; 
echo -n "type digits : "; 
read nos; 
# this is used to sort numbers in order, otherwise the script
# will work only when user specifies numbers in right order
# also we delete all non-numbers string to make sed code safe enough
nos="$(echo $nos|tr ' ' '\n'|sort -n|grep -v '[^0-9]'|tr '\n' ' ')"
# here we build sed code and modify the text
echo "$file" | { for i in $nos ; do A="s/-/+/$i;$A" ; done ; sed "$A" ; }

관련 정보