[linux] 각 줄의 시작 부분에 접두사 문자열 추가

아래와 같은 파일이 있습니다.

line1
line2
line3

그리고 나는 얻고 싶다 :

prefixline1
prefixline2
prefixline3

루비 스크립트를 작성할 수는 있지만 필요하지 않은 것이 좋습니다.

prefix포함합니다 /. /opt/workdir/예를 들어 경로 입니다.



답변

# If you want to edit the file in-place
sed -i -e 's/^/prefix/' file

# If you want to create a new file
sed -e 's/^/prefix/' file > file.new

경우 prefix포함 /, 당신은하지의 다른 문자를 사용할 수 있습니다 prefix, 또는 탈출 /소위, sed명령이된다

's#^#/opt/workdir#'
# or
's/^/\/opt\/workdir/'


답변

awk '$0="prefix"$0' file > new_file

Perl (교체) :

perl -pi 's/^/prefix/' file


답변

Ex 모드에서 Vim을 사용할 수 있습니다 :

ex -sc '%s/^/prefix/|x' file
  1. % 모든 줄을 선택하십시오

  2. s 바꾸다

  3. x 저장하고 닫습니다


답변

접두사가 조금 복잡하면 변수에 넣으십시오.

prefix=path/to/file/

그런 다음 해당 변수를 전달하고 awk가 처리하도록하십시오.

awk -v prefix="$prefix" '{print prefix $0}' input_file.txt


답변

Perl이있는 경우 :

perl -pe 's/^/PREFIX/' input.file


답변

쉘 사용하기 :

#!/bin/bash
prefix="something"
file="file"
while read -r line
do
 echo "${prefix}$line"
done <$file > newfile
mv newfile $file


답변

다음은 moreutils의 ts명령을 사용하여 읽기 쉬운 oneliner 솔루션입니다.

$ cat file | ts prefix | tr -d ' '

그리고 그것이 단계별로 파생되는 방법 :

# Step 0. create the file

$ cat file
line1
line2
line3
# Step 1. add prefix to the beginning of each line

$ cat file | ts prefix
prefix line1
prefix line2
prefix line3
# Step 2. remove spaces in the middle

$ cat file | ts prefix | tr -d ' '
prefixline1
prefixline2
prefixline3