txt 파일의 각 요소에서 1을 빼는 방법. 나는 실제로 다음과 같은 것을 시도했습니다.이것문제가 발생했지만 성공하지 못했습니다.
다음 형식의 파일이 있다고 가정 해 보겠습니다.
2,4,5
1,2,3
14,12,1
이제 내가 원하는 파일은
// basically subtract 1 from all
1,3,4
0,1,2
13,11,0
내가 지금까지 시도한 것은
$awk '{if(getline != 0){
for(i = 0; i <=NF; i++){
$(i)=$(i)-1;
}
} print;}}'
각 요소부터 파일 끝까지, 하위 1까지 읽으려고 하는데 이렇게 하면 -1만 얻습니다.
답변1
논리는 정확하지만 몇 가지 실수를 했습니다.
awk -vOFS=, -F, '{
for(i = 1; i <=NF; i++ ){
$i -= 1;
}
print;
}' file.txt
getline
(사용한 대로) 다음 줄을 읽습니다$0
. 여기서는 의미가 없습니다.awk에게 쉼표로 분할(또는 사용)하도록 지시해야 합니다.
FS
기본적으로 공백으로 분할됩니다.-F
$0
전체 행이므로 루프를 시작하려고 합니다.i = 1
출력에 쉼표를 인쇄하려면
OFS=,
(출력 필드 구분 기호)를 설정해야 합니다.
또는 Perl을 사용할 수도 있습니다.
perl -ple 's{(\d+)}{$1 - 1}eg;' file.txt