Bash에서는 파일의 각 행 뒤에 문자열을 추가하려면 어떻게 해야 합니까?
파일 내의 각 행 뒤에 bash를 사용하여 문자열을 추가하려면 어떻게 해야 합니까?sed 명령어를 사용하면 어떻게 할 수 있을까요?
만약 당신이sed
를 사용하여 편집 가능-i
파라미터:
sed -e 's/$/string after each line/' -i filename
그렇지 않으면 임시 파일을 만들어야 합니다.
typeset TMP_FILE=$( mktemp )
touch "${TMP_FILE}"
cp -p filename "${TMP_FILE}"
sed -e 's/$/string after each line/' "${TMP_FILE}" > filename
나는 더 좋다echo
. 순수 bash 사용:
cat file | while read line; do echo ${line}$string; done
사용하는 것을 선호합니다.awk
. 컬럼이1개밖에 없는 경우$0
또는 마지막 열로 바꿉니다.
일방통행으로
awk '{print $0, "string to append after each line"}' file > new_file
아니면 이거.
awk '$0=$0"string to append after each line"' file > new_file
Lam(라미네이트) 유틸리티가 있으면 다음과 같이 실행할 수 있습니다.
$ lam filename -s "string after each line"
순수 POSIX 쉘 및:
suffix=foobar while read l ; do printf '%s\n' "$l" "${suffix}" ; done < file | sponge file
xargs
그리고.printf
:suffix=foobar xargs -L 1 printf "%s${suffix}\n" < file | sponge file
사용.
join
:suffix=foobar join file file -e "${suffix}" -o 1.1,2.99999 | sponge file
셸 툴 사용
paste
,yes
,head
&wc
:suffix=foobar paste file <(yes "${suffix}" | head -$(wc -l < file) ) | sponge file
주의:
paste
앞에 탭 문자를 삽입합니다.$suffix
.
물론이야.sponge
나중에 임시 파일로 대체할 수 있습니다.mv
다른 답들과 마찬가지로 원래 파일 이름 위에...
이것은 echo 명령어를 사용하여 파일 내의 각 행 끝에 문자열을 추가하는 것에 불과합니다.
cat input-file | while read line; do echo ${line}"string to add" >> output-file; done
>> 를 추가하면, 그 변경 내용이 출력 파일에 표시됩니다.
SED는 조금 못생겨서 이렇게 우아하게 할 수 있어요.
hendry@i7 tmp$ cat foo
bar
candy
car
hendry@i7 tmp$ for i in `cat foo`; do echo ${i}bar; done
barbar
candybar
carbar
언급URL : https://stackoverflow.com/questions/2869669/in-bash-how-do-i-add-a-string-after-each-line-in-a-file
'programing' 카테고리의 다른 글
공백과 따옴표가 있는 매개 변수를 사용하여 PowerShell에서 EXE 파일을 실행하는 방법 (0) | 2023.04.14 |
---|---|
./configure : /bin/sh^M : 잘못된 인터프리터 (0) | 2023.04.14 |
GitHub에서 분기된 저장소를 업데이트하거나 동기화하려면 어떻게 해야 합니까? (0) | 2023.04.14 |
바이트 배열을 이미지로 변환(wpf) (0) | 2023.04.14 |
WPF의 자동 완성 텍스트 상자 (0) | 2023.04.14 |