한 파일에서 홀수 및 짝수 문자열을 바꾸고 다른 파일에 저장하는 bash 스크립트가 있습니다.
#!/bin/bash
infile="inputfile"
outfile="outputfile"
{
while read -r odd && read -r even
do
echo "$even"
echo "$odd"
unset odd
done < "$infile"
# in case there are an odd number of lines in the file, print the last "odd" line read
if [[ -n $odd ]]; then
echo "$odd"
fi
} > "$outfile"
홀수와 짝수를 바꾸는 방법성격파일의 각 줄에?
예:
입력 파일:
one two three four five six
apple banana cocoa dish fish nuts
결과물 파일:
two one four three six five
banana apple dish cocoa nuts fish
답변1
사용행복하다(이전 Perl_6)
raku -ne 'put .words.rotor(2).map(*.reverse);'
또는
raku -ne '.words.rotor(2).map(*.reverse).put;'
또는
raku -ne '.words.rotor(2)>>.reverse.put;'
입력 예:
one two three four five six
apple banana cocoa dish fish nuts
예제 출력:
two one four three six five
banana apple dish cocoa nuts fish
위 내용은 Perl 계열의 프로그래밍 언어인 Raku로 작성된 답변입니다. 즉, raku
한 줄씩 자동 인쇄가 아닌 플래그를 사용하여 명령줄에서 호출됩니다. 또는 명령줄 플래그를 -ne
사용할 때 각 줄은 Raku "테마 변수"( Perl에서는 "테마 변수"라고도 함) 라고도 불리는 에 로드됩니다 . 선행 점은 주제 변수 에 다음 방법이 적용됨을 나타내는 약칭 형태입니다 . 연속적인 메소드는 도트 연산자와 함께 연결되며 , 각 메소드는 차례로 입력 데이터를 변환합니다.-ne
-pe
$_
$_
.
$_.
$_
.
이러한 방법을 살펴보면, 한 줄씩 입력되는 내용이 공백으로 구분된 words
다음 rotor
단어 쌍으로 함께 구성되는 것을 볼 수 있습니다(즉, 2
인수가 제공됨). 함수 이름이 rotor
다소 모호할 수 있지만 데이터 개체의 개별 요소가 반복되거나 rotor
편집되고 함께 그룹화/집계된다는 의미인 것 같습니다. -ing 후에 rotor
각 쌍은 사용 및 적용되는 기능에 의해 개별적으로 처리됩니다. 마지막으로 출력은 다음과 같이 인쇄됩니다.map
reverse
put
위의 코드( rotor
기본값 사용)는 끝에 있는 "불완전한 요소 집합"을 제거합니다. 마지막에 "불완전한 요소 집합"을 유지하려면 호출을 변경하여 rotor
True 매개변수를 추가 partial
하거나 batch
동일한 의미인 다음을 사용하세요.
raku -ne 'put .words.rotor(2, partial => True).map(*.reverse);'
이는 다음과 같습니다.
raku -ne 'put .words.rotor(2, :partial).map(*.reverse);'
이는 다음과 같습니다.
raku -ne 'put .words.batch(2).map(*.reverse);'
답변2
sed
@guest_7이 제안한 것을 제안합니다 .
$ sed -e 's/\([^ ]\+\) \([^ ]\+\)/\2 \1/g' inputfile
two one four three six five
banana apple dish cocoa nuts fish
답변3
이를 사용하려면 perl
입력 단어 배열(@F)에서 두 개의 선행 요소를 잘라내고 뒤집은 다음 출력 배열(@A)에 추가하면 됩니다.
perl -slane 'my @A;
push @A, reverse splice @F, 0, 2
while @F > 1;
print @A, @F;
' -- -,=\ ./yourfile
쉘 자체를 사용하십시오.
cat yourfile |
while IFS= read -r l
do
set -f; set -- $l
while [ "$#" -gt 1 ]
do
printf '%s ' "$2" "$1"
shift 2
done
echo "${1-}"
done
awk '
{
t=$0;$0="";split(t, a)
for (i=1; i+1 in a; i+=2) {
$(i) = a[i+1]
$(i+1) = a[i]
}
if (i in a) $(i) = a[i]
}1
' yourfile
을 통해 python
우리는 목록 슬라이싱 및 목록 이해 기능을 활용합니다.
python3 -c 'import sys
with open(sys.argv[1]) as f:
for l in f:
F = l.strip().split()+[""]
print(*[f"{b} {a}" for a,b in zip(F[::2],F[1::2])])
' yourfile
답변4
#!/usr/bin/python
k=open('file1','r')
for line in k:
fina_list=[]
con=line.strip().split(' ')
for raco in range(0,len(con),2):
if (int(raco)%2 == 0):
odd_cha=con[raco+1]
even_cha=con[raco]
con[raco]=odd_cha
con[raco+1]=even_cha
fina_list.append(con[raco])
fina_list.append(con[raco+1])
print " ".join(fina_list)
산출
two one four three six five
banana apple dish cocoa nuts fish