我需要帮助删除文本文件所有行中分隔符);
前后的文本。 |
IE:
SUBSCIBER_MSISDN=6289666195060');BEGIN DBMS_LOCK.SLEEP(5); END-- rKSy|
结果应该是这样的
SUBSCIBER_MSISDN=6289666195060|
知道如何删除该部分吗?这是一个大文件。
如果我必须使用的话我会发疯的sed
。
答案1
假设您显示的是某个输入文件中的完整行:
sed "s/'.*/|/" file >newfile
'
这会将每行第一个字符之后的所有内容替换为一个|
字符。结果将通过重定向写入新文件。我在sed
表达式周围使用双引号,因为单引号字符串不能包含单引号字符。
给定示例数据,这会产生
SUBSCIBER_MSISDN=6289666195060|
如果您还想从行首删除空格(您的示例似乎是这样做的):
sed -e "s/'.*/|/" -e 's/^[[:blank:]]*//' file >newfile
或者,
sed "s/'.*/|/; s/^[[:blank:]]*//" file >newfile
如果您厌恶sed
,您可以使用awk
进行完全相同的转换:
awk '{ sub("'"'"'.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile
时髦的外观'"'"'
是引用的单引号。它必须在构成awk
代码的单引号字符串之外加双引号。我们还可以使用'\''
,即
awk '{ sub("'\''.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile
或者,您可以使用八进制 ASCII 代码作为单引号字符:
awk '{ sub("\047.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile