
테이블이 있고 각 행에 파일 이름이 포함된 열을 추가하고 싶습니다. 아래에 예를 게시하겠습니다. 입력 내용은 다음과 같습니다.
SPATA17 1 217947738
LYPLAL1 1 219383905
FAM47E 4 77192838
SHROOM3 4 77660162
SHROOM3 4 77660731
SHROOM3 4 77662248
출력은 다음과 같습니다.
SPATA17 1 217947738 file1
LYPLAL1 1 219383905 file1
FAM47E 4 77192838 file1
SHROOM3 4 77660162 file1
SHROOM3 4 77660731 file1
SHROOM3 4 77662248 file1
아주 유용하게 적용했어요해결책이 포럼에서 제안하셨는데(해결책은 sed 기능을 사용하는 것입니다 :) for f in file1 file2 file3; do sed -i "s/$/\t$f/" $f; done
문제가 좀 있습니다. 출력이 예상과 다릅니다. 이것이 Vim을 사용하여 시각화하는 방법입니다.
SPATA17 1 217947738^M file1
LYPLAL1 1 219383905^M file1
FAM47E 4 77192838^M file1
SHROOM3 4 77660162^M file1
SHROOM3 4 77660731^M file1
SHROOM3 4 77662248^M file1
새 줄(\n)을 먼저 제거해야 하기 때문에 이것이 버그일까요? 이 솔루션이 나에게 적합하지 않다는 것을 알았습니다.
답변1
이는 원본 파일에 이미 존재하는 "캐리지 리턴" ^M
입니다 . \r
다음을 사용하여 삭제할 수 있습니다.
sed -i 's/\r//' file1 file2 file3
답변2
\r
루프를 제거하는 대신 다음으로 교체할 수 있습니다.
sed -ni 'P;F' file1 file2 file3 …
^P;F^N;s/\n/\t/p^