항상 겁이 나는 이유 때문에 sed
구문이 조금 이상한 것 같습니다. 다음 내용이 무엇인지 확실히 이해하고 싶습니다.
sed -i.bak '/^x /d' "$SOME_FILE"
$SOME_FILE
그러면 먼저${SOME_FILE}.bak
( )의 백업이 만들어집니다-i.bak
.$SOME_FILE
정규식 ""과 일치하는 모든 줄^x
(즉,x
' '로 시작하고 뒤에 공백이 오는 줄)이 삭제됩니다.
답변1
예, 귀하의 이해가 정확합니다. 귀하의 형식으로 판단하면 귀하가 GNU를 사용하고 있다고 가정합니다(다른 구현에서는 sed
및 사이에 공백이 필요할 수 있으며 일부는 전혀 지원하지 않을 수 있습니다). 작동 방식은 다음과 같습니다.-i
.bak
-i
-i
info sed
-i[SUFFIX]
--in-place[=SUFFIX]
This option specifies that files are to be edited in-place. GNU
`sed' does this by creating a temporary file and sending output to
this file rather than to the standard output.(1).
This option implies `-s'.
When the end of the file is reached, the temporary file is renamed
to the output file's original name. The extension, if supplied,
is used to modify the name of the old file before renaming the
temporary file, thereby making a backup copy(2)).
This rule is followed: if the extension doesn't contain a `*',
then it is appended to the end of the current filename as a
suffix; if the extension does contain one or more `*' characters,
then _each_ asterisk is replaced with the current filename. This
allows you to add a prefix to the backup file, instead of (or in
addition to) a suffix, or even to place backup copies of the
original files into another directory (provided the directory
already exists).
If no extension is supplied, the original file is overwritten
without making a backup.
이 d
명령은 이전 표현식이 성공한 모든 행을 삭제합니다.엄밀히 말하자면, "패턴 공간"을 제거하지만 간단한 sed
스크립트에서는 해당 줄입니다.
답변2
'/^x /d'
여기에는 실제 공간이 필요하지 않습니다. 더 좋은 점은 공백으로 시작하여 숫자로 시작하는 '/^x\s\d'
문자열의 시작을 나타낸다는 것입니다 .x