다음 내용이 포함된 파일이 있다고 가정해 보겠습니다.
2:33:4:F:T:Y
1:10:0:A:B:C:D:E:F:G:
F
두 번째 줄을 사용하여 R
여러 파일로 어떻게 변경할 수 있습니까 sed
?
원하는 출력은 다음과 같습니다.
2:33:4:F:T:Y
1:10:0:A:B:C:D:E:R:G:
편집하다:
변경 사항은 필드가 :로 구분된 각 파일의 두 번째 줄에만 있어야 하므로 9번째 필드를 변경하고 해당 필드에 F 이외의 항목이 있으면 무시해야 합니다.
답변1
그리고 awk
:
F에서 R까지 2nd
모든 파일과 모든 줄을 교체하십시오 .9th field
$ awk 'BEGIN{FS=OFS=":"} FNR==2{ sub(/^F$/,"R",$9); }1' file1 file2
2:33:4:F:T:Y
1:10:0:A:B:C:D:E:R:G:
2:33:4:F:T:Y
1:10:0:A:B:C:D:E:R:G:
답변2
awk를 사용하세요:
$ awk -F: -vOFS=: '($9=="F" && NR==2){$9="R"}1' file
2:33:4:F:T:Y
1:10:0:A:B:C:D:E:R:G:
파일이 많은 경우 다음을 수행하세요.
for file in *; do
awk -F: -vOFS=: '($9=="F" && NR==2){$9="R"}1' "$file" > newfile &&
mv newfile "$file"
done
또는 최신 버전의 GNU awk를 사용하세요.
gawk -iinplace -F: -vOFS=: '($9=="F" && FNR==2){$9="R"}1' file.*