파일의 각 줄이 두 번 반복되기를 원하며, 줄의 첫 번째 복사본에서 값 3은 2로 변경되고 값 4는 1로 변경됩니다. 각 행의 두 번째 복사본에서는 값 3이 1로 변경되고 값 4가 2로 변경됩니다. 복제를 위해 awk 명령을 사용할 수 있다는 것을 알고 있습니다.
awk '{for(i=0;i<1;i++)print}' input > output
그런데 제가 설명한 방식대로 값을 어떻게 바꾸는지 모르겠어요
예를 들어, 각 줄을 2번 반복합니다.
1 000003444
2 334566875
3 000233300
4 222111000
이 되다:
1 000002111
1 000001222
2 221566875
2 112566875
3 000222200
3 000211100
4 222111000
4 222111000
답변1
그리고 awk
:
$ awk '
{ tmp = $2; gsub("3", "2", $2); gsub("4", "1", $2); print}
{ $2 = tmp; gsub("3", "1", $2); gsub("4", "2", $2); print}
' <file
답변2
펄 방식:
$ perl -lane '$i=$F[1]; $F[1]=~s/3/2/g; $F[1]=~s/4/1/g;
$i=~s/3/1/g; $i=~s/4/2/g; print "$F[0] $F[1]\n$F[0] $i"' file
1 000002111
1 000001222
2 221566875
2 112566875
3 000222200
3 000211100
4 222111000
4 222111000
먼저 현재 줄을 로 저장한 $i
다음 현재 줄에서 필요한 대체 작업을 수행하고 마지막 $i
으로 현재 줄( $_
) 및 을 인쇄합니다 $i
.