sed를 사용하여 파일의 첫 번째 줄 전체를 해당 첫 번째 줄과 추가 텍스트로 어떻게 바꿀 수 있습니까? 예를 들어 -foo
한 줄만 포함된 파일에 어떻게 추가할 수 있습니까 ?
testfile
내용 시작:
some-text
testfile
내용 끝:
some-text-foo
답변1
파일의 첫 줄에 어떻게 추가하나요?
sed를 사용하여 파일의 첫 번째 줄 전체를 해당 첫 번째 줄과 추가 텍스트로 어떻게 바꿀 수 있습니까?
Windows에서 SED를 사용하여 줄 번호 1의 끝에 문자열을 추가한 다음 EOL 문자에 대해 DOS 형식, 즉 LF가 아닌 CRLF로 다시 변환하는 또 다른 방법이 있습니다.
첫 번째 명령( -foo
첫 번째 줄 끝에만 문자 추가)
SED -i "1 s|$|-foo|" "C:\Path\testfile.txt"
두 번째 명령(EOL을 캐리지 리턴 줄 바꿈으로 다시 변환)
SED -i "s/$/\r/" "C:\Path\testfile.txt"
답변2
sed '1{s/$/-foo/}' file
1은 첫 번째 줄에 범위를 지정하는 데 사용할 수 있습니다 num,num
. 예를 들어 3,5는 줄 3을 줄 5로 변경합니다. s 대체의 경우 $는 줄의 끝을 의미합니다. 바로 파일을 변경하고 싶다면 -i
매개변수를 사용하세요. 어쨌든 주의해서 사용하세요.
awk 'FNR==1{print $0 "-foo";}' file(s)
awk가 더 강력하지만 파일을 즉시 변경할 수 있는 -i 매개변수가 없습니다.
답변3
당신은 이것을 할 수 있습니다
sed -i '1!b;s/$/\-foo/g' testfile
이 명령은 파일을 가져와서 첫 번째 줄만 보고(1!b;) 줄 끝($)을 찾아 원하는 문자열로 바꿉니다.