我正在使用 SED 命令尝试截断行。我目前正在尝试从文本文件中截取前 16 个字符(逐行)
示例行:
psinfo -s -c psinfo -s -c ALASTAIR-MUNRO
psinfo -s -c psinfo -s -c ANDREWATKINSON
psinfo -s -c psinfo -s -c ANDY-KAYE
psinfo -s -c psinfo -s -c ANDYTURNER
psinfo -s -c psinfo -s -c CAD-SPARE2
psinfo -s -c psinfo -s -c CAD-SPARE3
psinfo -s -c psinfo -s -c CADTEMP1
psinfo -s -c psinfo -s -c CARLWALKER
psinfo -s -c psinfo -s -c CAROLEGIBBONS
psinfo -s -c psinfo -s -c CHRIS-SMITH
我正在尝试删除第一个部分PSinfo -s -c
,然后将其转换为单独的 txt
这是我得到的但没有起作用的东西(如下)有什么想法吗?
BIN\sed -e 's/^\(.\{60\}\).*/\16/' Working\Hostnames3.txt > Working\Hostnames4.txt
答案1
实现此目的的一种简单且经济的方法是:
cut -c 16- hostname.txt > altered_hostname.txt
这个简单命令的神奇部分cut
在于这两个选项:
-c, --characters=LIST
select only these characters
N- from N'th byte, character or field, to end of line
答案2
你可以尝试这个命令(awk)
awk '{sub(".*" $3 FS,"")}1' Working/Hostnames3.txt > Working/Hostnames4.txt
从输入文件中删除前三个字段(据我了解,这是您所需要的) PS 以下是上述脚本的执行示例:
# cat in
a b c d
aa bb cc dd
a1 b1 c1 d1
# awk '{sub(".*" $3 FS,"")}1' in >out
# cat out
d
dd
d1
答案3
另一种方法:使用 grep 获取最后一个psinfo ....
:
grep -Po '.*\Kpsinfo.*'