sed заменить последние символы последней строки в AIX? - PullRequest
0 голосов
/ 19 марта 2020

У меня есть этот тип .txt файла:

xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \

Я хотел бы удалить , \, если последняя строка:

xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx

В AIX я пытаюсь:

sed "s/\//" test.txt 

Но это не работает ...

Не могли бы вы мне помочь?

Ответы [ 2 ]

2 голосов
/ 19 марта 2020

Вы можете использовать

sed '$ s|, \\||' test.txt > output.txt

См. онлайн sed демо .

$ означает только запуск sed в последней строке, и s|, \\|| заменяет одно вхождение , \ пустой строкой.

1 голос
/ 19 марта 2020

Если вы хотите изменить файл напрямую, используйте ed вместо sed (особенно в AIX, поскольку я почти уверен, что его sed не реализует нестандартную опцию -i для inplace редактирование, означающее, что вы должны сохранить его вывод во временный файл, а затем mv его с исходным именем):

printf '%s\n' '$s/, \\$//' w | ed -s test.txt
...