[英]Editing text using awk or sed in bash
我的file.txt
的内容是这样的:
fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
1 sdfsdf
3 sdfghj
f fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty
我要更改此部分:
1 sdfsdf
3 sdfghj
f fgdfhtyu
为此:(删除第一列和空格)
sdfsdf
sdfghj
fgdfhtyu
然后将file.txt
的整个输出重定向到file2.txt
。
这怎么可能...?
谢谢
尝试将脚本更改为此:
find "$1" -print |
while IFS= read -r line; do
awk '!a[$0]++{print $NF}' "$line" > /tmp/file.txt
done
有什么需要改变的吗?
使用sed ,您可以执行以下操作
sed 's/^ \+[^ ] \+//' file1.txt > file2.txt
它将删除行开头的所有序列,这些序列包含一系列空格,后跟一个非空格字符,而不是一系列空格。 使用问题中的文件,结果为:
fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
sdfsdf
sdfghj
fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty
应该这样做:
awk '{print $NF}' file.txt > file2.txt
或一天中最短的解决方案:
awk '{$0=$NF}1' file.txt > file2.txt
cat file2.txt
fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
sdfsdf
sdfghj
fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty
只需打印最后一列。
另一个简单的sed
命令,
sed 's/.* \(.*\)/\1/g' file1.txt > file2.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.